一尘不染

Rails按关联字段排序

sql

我有以下型号

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,我没有任何问题,例如,订单运作正常

@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

另外,我尝试使用连接

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的问题,所有连接均正常。


阅读 126

收藏
2021-03-17

共1个答案

一尘不染

试试这个:

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

我认为您需要的是orderuser_extensions,而不是user_extension

2021-03-17