Rails, prevent failure warnings for Model.scoped, find (: all) and #all relation?

I have tests that pass but are displayed

$ rspec spec/event_calendar_spec.rb 
......DEPRECATION WARNING: Model.scoped is deprecated. Please use Model.all instead. (called from events_for_date_range at /home/durrantm/Dropbox/96_2013/work/code/ruby/event_calendar/lib/event_calendar.rb:52)
DEPRECATION WARNING: Calling #find(:all) is deprecated. Please call #all directly instead. You have also used finder options. These are also deprecated. Please build a scope instead of using finder options. (called from events_for_date_range at /home/durrantm/Dropbox/96_2013/work/code/ruby/event_calendar/lib/event_calendar.rb:52)
DEPRECATION WARNING: Relation#all is deprecated. If you want to eager-load a relation, you can call #load (e.g. `Post.where(published: true).load`). If you want to get an array of records from a relation, you can call #to_a (e.g. `Post.where(published: true).to_a`). (called from events_for_date_range at /home/durrantm/Dropbox/96_2013/work/code/ruby/event_calendar/lib/event_calendar.rb:52)

Model:

 50     # Get the events overlapping the given start and end dates
 51     def events_for_date_range(start_d, end_d, find_options = {})
 52       self.scoped(find_options).find(
 53         :all,
 54         :conditions => [ "(? <= #{self.quoted_table_name}.#{self.end_at_field}) AND (#{self.quoted_table_name}.#{self.start_at_field}< ?)", start_d.to_time.utc, end_d.to_time.utc ],
 55         :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC"
 56       )
 57     end

I tried several removal options. scoped, delete: everything and use where, but nobody seemed to work, for example:

 50     # Get the events overlapping the given start and end dates
 51     def events_for_date_range(start_d, end_d, find_options = {})
 52       self.all.where(find_options,
 53         :conditions => [ "(? <= #{self.quoted_table_name}.#{self.end_at_field}) AND (#{self.quoted_table_name}.#{self.start_at_field}< ?)", start_d.to_time.utc, end_d.to_time.utc ],
 54         :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC"
 55       ) 
 56     end

gives:

  expected: [#<CustomEvent id: 1, custom_start_at: "2013-10-27 13:12:00", custom_end_at: "2013-10-29 13:12:00">]
        got: #<ActiveRecord::Relation [#<CustomEvent id: 1, custom_start_at: "2013-10-27 17:12:00", custom_end_at: "2013-10-29 17:12

How to update find so as not to display failure warnings?

+4
source share
1 answer

all implied, you do not need it when using areas.

 50     # Get the events overlapping the given start and end dates
 51     def events_for_date_range(start_d, end_d, find_options = {})
 52       self.where(find_options,
 53         :conditions => [ "(? <= #{self.quoted_table_name}.#{self.end_at_field}) AND (#{self.quoted_table_name}.#{self.start_at_field}< ?)", start_d.to_time.utc, end_d.to_time.utc ],
 54         :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC"
 55       ) 
 56     end

You would use only allif you really want all the records: CustomEvent.all. If you are worried about default scales, you can do something like this:

 50     # Get the events overlapping the given start and end dates
 51     def events_for_date_range(start_d, end_d, find_options = {})
 52       self.unscoped.where(find_options,
 53         :conditions => [ "(? <= #{self.quoted_table_name}.#{self.end_at_field}) AND (#{self.quoted_table_name}.#{self.start_at_field}< ?)", start_d.to_time.utc, end_d.to_time.utc ],
 54         :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC"
 55       ) 
 56     end

all rails 4 , load:

 50     # Get the events overlapping the given start and end dates
 51     def events_for_date_range(start_d, end_d, find_options = {})
 52       self.where(find_options,
 53         :conditions => [ "(? <= #{self.quoted_table_name}.#{self.end_at_field}) AND (#{self.quoted_table_name}.#{self.start_at_field}< ?)", start_d.to_time.utc, end_d.to_time.utc ],
 54         :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC"
 55       ).load
 56     end
+5

All Articles