sql - 按关联字段排序的 Rails

标签 sql ruby-on-rails postgresql

我有以下型号

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/

相关文章:

ruby-on-rails - Rails 3.1 + postgresql 数据库 - SELECT ... WHERE ... IN 的 sql 语法错误

sql-server - SQL Server 中 CASE 语句中的 IN 条件

database - 以高效的方式维护和更新大量 SQL 结果子集

sql - 将本地数据库导出到azure sql数据库

ruby-on-rails - 辅助方法中的参数

ruby-on-rails - Rails 4.2 从事件作业中获取延迟的作业 ID

postgresql - Postgres 包含抛出 "name": "SequelizeEagerLoadingError"

mysql - 使用 SQL join 仅选择最新版本的数据

mysql - 时间段的计算 SQL

SQL Server : How to get current date time in YYYYMMDDHHMISSMSS