1

次のクラスとリレーションのセットを定義しており、特定のユーザーがタグ付けされたストーリーを少なくとも 1 つ含むすべてのイベントのコレクションを構築できるようにしたいと考えています。

つまり、私のイベントコントローラーでは、ユーザーがタグ付けされたストーリーを含むすべてのイベントを返す Event.events_user_is_in(@user) のようなものを呼び出せるようにしたいと考えています。

class Event < ActiveRecord::Base
  has_many :stories
end

class Story < ActiveRecord::Base
  belongs_to :event
  has_many: tags
end

class Tag< ActiveRecord::Base
  belongs_to :story
  belongs_to :user
end

class User< ActiveRecord::Base
  has_many :tags
end

スコーピングについて読んでいて、ユーザーがタグ付けされたストーリーのみを返すストーリーのスコーピングを正常に生成しましたが、イベントに対してこれを行う方法がわかりません。どんな助けでも大歓迎です!

4

1 に答える 1

2

必要に応じて、メソッドまたはスコープを使用できます。

class Event < ActiveRecord::Base

  scope :events_user_is_in, lambda {|user|
    joins(:stories => :tags).where("tags.user_id = ?", user.id).uniq
  }

end
于 2012-07-22T21:45:50.260 に答える