我有测试通过但显示
$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)
该模型是:
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
我尝试了几种删除.scoped,删除:all并使用where但似乎没有工作,例如:
50 # Get the events overlapping the given start and end dates 51 def events_for_date_range(start_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}< ?)",54 :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC" 55 ) 56 end
放弃:
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
如何更新查找以不显示弃用警告?
解决方法
一切都是隐含的,你在使用范围时不需要它.
50 # Get the events overlapping the given start and end dates 51 def events_for_date_range(start_d,find_options = {}) 52 self.where(find_options,54 :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC" 55 ) 56 end
如果您确实想要所有记录,则只能使用all:CustomEvent.all.如果您担心默认范围,可以执行以下操作:
50 # Get the events overlapping the given start and end dates 51 def events_for_date_range(start_d,find_options = {}) 52 self.unscoped.where(find_options,54 :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC" 55 ) 56 end
如果您使用rails 4中的all作为强制加载的方法,那么现在应该使用load:
50 # Get the events overlapping the given start and end dates 51 def events_for_date_range(start_d,54 :order => "#{self.quoted_table_name}.#{self.start_at_field} ASC" 55 ).load 56 end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。