问题

我有以下模型

 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,company对此表进行排序. 使用first_name,phone_number我没有任何问题,订单工作正常,例如

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

但我也需要公司排序,不知道如何做到这一点。

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

 @user.user_extension.company
 

所以我遇到了sql的麻烦,这将给我公司订购的所有用户. DB:PostgreSQL. 谢谢.

编辑:

我应该提供更多关于这些模型的信息。

 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

 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
 

联合国

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

我也明白了

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

解决 我的bd有问题,所有连接工作正常.

  最佳答案

尝试这个:

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

我想你需要order:user_extensions,而不是user_extension

  相同标签的其他问题

sqlruby-on-railspostgresql