查找在过去24小时内创建了“belongs_to”模型实例的rails模型实例

时间:2014-08-05 14:47:38

标签: sql ruby-on-rails

我不确定我是否正确措辞。

我有两个模型store_attachmentsstore

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] } }

1 个答案:

答案 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