ZWZ100001您可以加入另一个不是Arel协会的表吗?
·
问题:ZWZ100001您可以加入另一个不是Arel协会的表吗?
当我想寻找将特定方案分配给它的特定页面时(通过方案\ _ASSIGNMENT),我有一些SQL正在工作:
Page.find_by_sql("
SELECT pages.id
FROM pages
INNER JOIN scheme_assignments ON (scheme_assignments.schemable_type = 'Page' AND
scheme_assignments.schemable_id = pages.sid)
INNER JOIN schemes ON (schemes.sid = scheme_assignments.scheme_id AND
schemes.sid IN (4,6,7))
GROUP BY pages.id")
当我尝试将其转换为 ARel 时:
Page.select("pages.id")
.joins("scheme_assignments")
.on("scheme_assignments.schemable_type = 'Page' AND scheme_assignments.schemable_id = pages.sid")
.joins("schemes")
.on("schemes.sid = scheme_assignments.scheme_id AND schemes.sid IN (1)")
.group("pages.id")
我会得到这个错误:NoMethodError: undefined method
join \ _sql'for“ schemes”:string `
怎么来的?是因为它不是我的ZWZ100005型号中的关联吗?一个人可以在不创建模型中的关联的情况下将SQL转换为Arel吗?
解答
Page.joins("INNER JOIN scheme_assignments
ON (scheme_assignments.schemable_type = 'Page' AND scheme_assignments.schemable_id = pages.sid)
INNER JOIN schemes
ON (schemes.sid = scheme_assignments.scheme_id AND schemes.sid IN (4,6,7))").
select("DISTINCT pages.*");
更多推荐
所有评论(0)