I am using RubyMine
with rails 3.2.12
and I am getting following deprecated warning in my IDE. Any Idea How can I solve this deprecated warning?
find(:first) and find(:all) are deprecated in favour of first and all methods. Support will be removed from rails 3.2.
I changed my answer after @keithepley comment
#Post.find(:all, :conditions => { :approved => true })
Post.where(:approved => true).all
#Post.find(:first, :conditions => { :approved => true })
Post.where(:approved => true).first
or
post = Post.first or post = Post.first!
or
post = Post.last or post = Post.last!
You can read more from this locations
Post.find(:all, :conditions => { :approved => true })
Post.all(:conditions => { :approved => true })
named_scope :approved, :conditions => { :approved => true }
Post.approved.all
Post.scoped(:conditions => { :approved => true }).all
Here is the Rails 3-4 way of doing it:
Post.where(approved: true) # All accepted posts
Post.find_by_approved(true) # The first accepted post
# Or Post.find_by(approved: true)
# Or Post.where(approved: true).first
Post.first
Post.last
Post.all
Use the new ActiveRecord::Relation
stuff that was added in Rails 3. Find more info here: http://guides.rubyonrails.org/active_record_querying.html
Instead of #find
, use #first
, #last
, #all
, etc. on your model, and the methods that return a ActiveRecord::Relation, like #where
.
#User.find(:first)
User.first
#User.find(:all, :conditions => {:foo => true})
User.where(:foo => true).all
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