0

私はこれに似たモデルを設定しています:

class Book < ActiveRecord::Base
  has_many :histories, as: :object
end

class Magazine < ActiveRecord::Base
  has_many :histories, as: :object
end

class Action < ActiveRecord::Base
  belongs_to :object, polymorphic: true

  default_scope order(:done_at)

  # a history contains an action and the time that action 
  # occurred on the object it belongs to
end

ここで、すべてのオブジェクトで発生した最新の5つのアクションのリストを取得したいと思います。だから私は次のようなことをすることができます:

Action.limit(5)

ただし、問題は、同じ本で2つのアクションが最近発生した場合、両方のアクションが取得されることです。最新のものだけを取得したい。どうすればこれを達成できますか?

4

1 に答える 1

0

私が欲しかったのはグループオプションであることがわかりました。だから私は次のようなことをすることができます:

Action.group(:object_id).group(:object_type).limit(5)
于 2012-11-07T14:27:18.080 に答える