我定义了以下一组类和关系,我希望能够构建一个包含至少一个特定用户已被标记的故事的所有事件的集合。
即。在我的事件控制器中,我希望能够调用类似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
我一直在阅读有关范围界定并已成功生成故事范围的故事,该故事仅返回用户被标记的故事,但我看不到如何为事件执行此操作。任何帮助将不胜感激!
答案 0 :(得分:2)
如果您愿意,可以使用方法或范围:
class Event < ActiveRecord::Base
scope :events_user_is_in, lambda {|user|
joins(:stories => :tags).where("tags.user_id = ?", user.id).uniq
}
end