我不确定我是否正确措辞。
我有两个模型store_attachments
和store
。
store_attachments belongs_to store
,但store has_many attachments
。
store_attachments
有一个created_at
字段。
我有一个范围来查找过去24小时内创建的store_attachments
,但我似乎无法在store
模型上调用它。
我目前有Store.store_attachments.added_within 24.hours.ago
。
我明白为什么那个人不起作用,但我不确定我是怎么想的。 Store_attachments
必须属于Store
,因此不会在其他地方使用。
我的范围代码......
scope :added_within, lambda { |time_ago| { :conditions => ['created_at < ?', time_ago] } }
答案 0 :(得分:2)
我想如果你从24小时前过去的日期,你需要以下条件:
scope :added_within, lambda { |time_ago| { :conditions => ['created_at > ?', time_ago] } }
你有一个<
,这意味着比你进入范围的时间更长。
此外,在使用关系之前,您需要Store类的实例,因此您需要
store = Store.first
store.store_attachments.added_within 24.hours.ago
我总是使用常规的旧类方法而不是范围。它对我来说似乎更具可读性。
class StoreAttachments < ActiveRecord::Base
def self.added_within(time_ago = 24.hours.ago)
where("created_at > ?", time_ago)
end
# vs
scope :added_within, lambda { |time_ago| { conditions: [ 'created_at > ?', time_ago] } }
end