Rails按关联字段排序 [英] Rails order by association field
问题描述
我有以下模型
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屋!