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