Rails 4,如何通过 - has_many关联活动记录

时间:2015-06-19 01:32:53

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord

我为三张桌子建模

活动 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)

是另一个命令存在获取事件类别的列表,如

Event.live_events.event_categories

1 个答案:

答案 0 :(得分:1)

EventCategory.joins(:events).where(events: { visible_status: 1 })

也许这个可以帮助

相关问题