我跟随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)
答案 0 :(得分:2)
您可以从EventsStudyLevels
Event.where(id: EventStudyLevels.where(study_level_id: study_level_ids).pluck(:event_id))