我为三张桌子建模
活动, EventEventCategory 和 EventCategory
class Event < ActiveRecord::Base
has_many :event_event_categories
has_many :event_categories, :through => :event_event_categories
scope :live_event, ->{where(visible_status: 1)}
end
class EventEventCategory < ActiveRecord::Base
belongs_to :event
belongs_to :event_category
end
class EventCategory < ActiveRecord::Base
has_many :event_event_categories
has_many :events, :through => :event_event_categories
end
我使用live_event范围获得了一个事件。
@events = Event.live_event
我想获得 live_event 的category_lists
现在我在代码
下面获得了一个类别列表EventCategory.where("id in (?)", EventEventCategory.where("id in (?)", @events.pluck(:id).uniq))
或
EventCategory.where("id in (?)", @events.joins(:event_event_categories).pluck(:event_category_id).uniq)
是另一个命令存在获取事件类别的列表,如
的
答案 0 :(得分:1)
EventCategory.joins(:events).where(events: { visible_status: 1 })
也许这个可以帮助