Rails Mysql按关联表之一排序

时间:2018-09-28 17:43:43

标签: mysql ruby-on-rails

我有3个具有关联关系的模型:

User (id, email)
SellerProfile (user_id, name)
BuyerProfile (user_id, name)

用户可能具有关联的表之一。 我正在按名称对结果进行排序,但名称可以来自seller_profilebuyer_profile表。

我用两个条件子查询来构建它,但我一直在寻找在一个请求中得到它的方法。

我尝试使用联接,但是没有用,因为它不知道用户是否关联了seller_profilebuyer_profile

有人尝试过类似吗?

1 个答案:

答案 0 :(得分:0)

使用COALESCE

User.left_joins(:seller_profile, :buyer_profile).order("COALESCE(seller_profiles.name, buyer_profiles.name)")

如果您遇到此类问题,我会重新考虑您的数据库设计。您需要单独的表格吗?您可以提取一些公用表(例如Profile)吗?