Rails按关联字段排序 [英] Rails order by association field

查看:104
本文介绍了Rails按关联字段排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下模型

class User
  attr_accesible :first_name, :phone_number
  has_one :user_extension
end

class UserExtension
  attr_accessible :company, :user_id
  belongs_to :user
end

我有包含所有用户的表。我需要按名字,电话号码,公司对该表进行排序。
使用first_name,phone_number我没有任何问题,例如,订单运行正常

I have table which contains all users. And I need to sort this table by first_name, phone_number, company. With first_name, phone_number I don't have any problems, order works fine, in example

@users = User.order("first_name desc")

,但我还需要按公司排序,不知道

, but I also need sort by company and don't know how to do it.

我可以通过这种方式获得公司名称

And I can get company name by this way

@user.user_extension.company

所以我在使用sql时遇到了麻烦,这会让我所有人公司订购的用户。
DB:PostgreSQL。
谢谢。

So i have troubles with sql, which will gave me all users ordered by company. DB: PostgreSQL. Thanks.

编辑:

我应该提供有关此模型的更多信息。

I should provide more information about this models.

create_table "user_extensions", :force => true do |t|
  t.integer  "user_id"
  t.string   "company"
end

create_table "users", :force => true do |t|
  t.string   "first_name"
  t.string   "phone_number" 
end

另外,我尝试使用join

Also, I tried use join

User.joins(:user_extension).order("user_extension.company desc")

以及我得到的东西

 User Load (1.6ms)  SELECT "users".* FROM "users" INNER JOIN "user_extensions" ON "user_extensions"."user_id" = "users"."id" ORDER BY user_extension.company desc
PG::Error: ERROR:  relation "user_extensions" does not exist

on

User.includes(:user_extension).order("user_extension.company desc")

我也得到

PG::Error: ERROR:  relation "user_extensions" does not exist

已解决
我的bd出现问题,所有连接均正常。

Resolved Have problems with my bd, all joins works fine.

推荐答案

尝试一下:

@users = User.includes(:user_extension).order("user_extensions.company desc")

我认为您需要按订单 user_extensions ,而不是 user_extension

I think you need at order: user_extensions, not user_extension

这篇关于Rails按关联字段排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆