class Type < ApplicationRecord
has_many :template_types
has_many :templates, through: :template_types
scope :for_templates, -> (templates) { joins(:template_types).where(template_types: {template: templates}).distinct } # either this or the method below
def self.for_templates(templates)
Type.joins(:template_types).where(template_types: {template: templates}).distinct
end
end
1条答案
按热度按时间hzbexzde1#
在纯ruby中,如果没有数据库,你会想要
flat_map
这是有效的,但不是有效的,只要你有很多模板/类型,因为它触发更多的查询和加载更多的对象比需要的。
当您有ActiveRecord时,您可以向
Type
添加scope
或self
方法(或者,而不是像我的示例中那样两者都有)(假设连接模型是
TemplateType
)然后做
我建议您重命名
Type
,因为type
在ActiveRecord(单表继承)中已经有了特殊的含义。