wen*_*oor 44 sql postgresql ruby-on-rails
我有以下型号
class User
attr_accesible :first_name, :phone_number
has_one :user_extension
end
class UserExtension
attr_accessible :company, :user_id
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
我有包含所有用户的表.我需要通过first_name,phone_number,company对此表进行排序.使用first_name,phone_number我没有任何问题,例如,订单工作正常
@users = User.order("first_name desc")
Run Code Online (Sandbox Code Playgroud)
,但我也需要按公司排序,不知道该怎么做.
我可以通过这种方式获得公司名称
@user.user_extension.company
Run Code Online (Sandbox Code Playgroud)
所以我有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
Run Code Online (Sandbox Code Playgroud)
另外,我尝试使用join
User.joins(:user_extension).order("user_extension.company desc")
Run Code Online (Sandbox Code Playgroud)
而我得到了什么
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
Run Code Online (Sandbox Code Playgroud)
上
User.includes(:user_extension).order("user_extension.company desc")
Run Code Online (Sandbox Code Playgroud)
我也明白了
PG::Error: ERROR: relation "user_extensions" does not exist
Run Code Online (Sandbox Code Playgroud)
已解决 我的bd有问题,所有连接工作正常.
use*_*775 94
试试这个:
@users = User.includes(:user_extension).order("user_extensions.company desc")
Run Code Online (Sandbox Code Playgroud)
我认为你需要order:user_extensions,不是user_extension
Gar*_*ver 15
合并可以使查询更小/看起来更漂亮,并在Rails 4.x中为我更快地进行基准测试:
@users = User.joins(:user_extension).merge(UserExtension.order(company: :desc))
Run Code Online (Sandbox Code Playgroud)
rog*_*rtu 12
@users = User.order("user_extension.company desc") 应该工作正常.
oma*_*oma 10
老话题,也许是偏离主题的,但我需要这个。前言:
User.includes(:user_extension).order('user_extensions.company ASC')
Run Code Online (Sandbox Code Playgroud)
让我们让它变得更有趣,创造更多的关联。
User.includes(user_extension: :company).order('companies.name ASC')
Run Code Online (Sandbox Code Playgroud)
User.includes(user_extension: { company: :guilds }).order('guilds.secret_knock ASC')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37738 次 |
| 最近记录: |