I have a model like this:
class Lesson
include Mongoid::Document
field :title, :type => String
field :category, :type => String
field :price, :type => Float
field :description, :type => String
field :user_id, :type => String
validates_presence_of :title
validates_presence_of :category
validates_presence_of :price
validates_presence_of :user_id
attr_accessible :title, :category, :description, :price
end
And I am trying to query like this:
@lessons_by_user = Lesson.find_by_user_id current_user.id
And I am getting:
undefined method `find_by_user_id' for Lesson:Class
How can I query by a specific attribute in MongoID?
I know how to do it like this:
@lessons = Lesson.all(:conditions=>{:user_id=>current_user.id.to_s})
but I am wondering if there is a shortcut...
Mongoid doesn't have the ActiveRecord style auto-created finder methods, it only supports a limited set of predefined finder methods:
Model.allModel.countModel.exists?Model.findModel.find_or_create_byModel.find_or_initialize_byModel.firstModel.lastHowever, it does have a general purpose where method so you say this:
@lessons = Lesson.where(:user_id => current_user.id)
where is chainable as well (just like where in newer versions of ActiveRecord) so you can add more conditions or specify the ordering by chaining more criteria calls.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With