【发布时间】:2020-07-13 06:06:37
【问题描述】:
我正在构建一个相当复杂的查询,并且我想尽可能地坚持使用活动记录方法(因为模型中有很多可选范围供以后添加)。
当前代码:
join_sql = "INNER JOIN(SELECT username, user_id FROM external_credentials UNION SELECT username, user_id FROM internal_credentials) ON id = user_id"
User.joins(join_sql)
这会产生以下 SQL:
SELECT "USERS".* FROM "USERS" INNER JOIN(SELECT username, user_id FROM external_credentials UNION SELECT username, user_id FROM internal_credentials) ON id = user_id FETCH FIRST :a1 ROWS ONLY [["LIMIT", 11]]
问题是它选择了"USERS".* 而不仅仅是*,所以我不能使用我加入的额外字段。我如何告诉 ActiveRecord 也接受所有联接字段?
【问题讨论】:
-
应该这样做
User.joins(join_sql).select("*")
标签: ruby-on-rails ruby-on-rails-5 rails-activerecord