给定返回哈希的查询:
def query
sql = %(SELECT * FROM components
INNER JOIN brands_components ON brands_components.component_id = components.id
INNER JOIN brands ON brands.id = brands_components.brand_id
INNER JOIN components_templates ON components.id = components_templates.component_id
WHERE components_templates.template_id = #{@template.id}
AND (components.user_id IS null OR components.user_id = #{@user.id})
AND brands.id = #{@user.brand_id})
ActiveRecord::Base.connection.exec_query(sql)
end
如何将结果实例化为 ActiveRecord 集合(尤其是当它们代表不同的模型时[即,STI 继承自 Component
])?
最佳答案
将 sql 传递给 find_by_sql将实例化模型,因此将方法更改为
def query
sql = [some sql]
Component.find_by_sql(sql)
end
应该给你你想要的。它还将为每条记录实例化正确的子类。
关于ruby-on-rails - 从 exec_query 实例化 STI 继承模型结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429895/