有很多:通过铁轨。如何从id数组中获取关联记录

时间:2015-02-01 17:23:37

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

我跟随has_many的模型设置:通过关系

class StudyLevel < ActiveRecord::Base
  has_many :events_study_levels
  has_many :events, :through => :events_study_levels
end

class Event < ActiveRecord::Base
  has_many :events_study_levels
  has_many :study_levels, :through => :events_study_levels
end

class EventsStudyLevels < ActiveRecord::Base
  belongs_to :study_level
  belongs_to :event
end

现在我希望从给定的一系列study_levels中获取事件。我能想到的一个解决方案是找到所有的study_levels,然后在每个研究级别找到所有的事件。但效率很低。你能否分享一种有助于实现

等方法的方法
Event.find_by_study_level_ids(study_level_ids_array) 

1 个答案:

答案 0 :(得分:2)

您可以从EventsStudyLevels

访问该信息
Event.where(id: EventStudyLevels.where(study_level_id: study_level_ids).pluck(:event_id))