我有以下型号
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 时遇到了麻烦,它会给我公司订购的所有用户。 数据库: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
关于sql - 按关联字段排序的 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19616611/