ruby-on-rails - Rails 按父 belongs_to 关联中的字段排序

标签 ruby-on-rails ruby sqlite sorting

我的 Rails 应用程序中有三个模型,UserNumberMessage:

class User < ActiveRecord::Base
  has_many :numbers
  has_many :messages, through: :numbers
end

class Number < ActiveRecord::Base
  belongs_to :user
  has_many :messages
end

class Message < ActiveRecord::Base
  belongs_to :number
end

Number 迁移文件有:

t.string :digits, index: true # Example: '14051234567' (no + sign)

在我的 Controller 中:

sort_mode = # asc or desc
@messages = current_user.messages.order(???)

问题是我想按他们的号码的数字对这些邮件进行排序。

如何动态(取决于排序模式)?

编辑:

sort_mode = 'asc'
@messages = current_user.messages.includes(:number)
order = { number: { digits: sort_mode } }
@messages = @messages.order(order)

^ 不起作用。第二个参数必须是方向

另外order('number.digits': sort_mode) 抛出:

SQLite3::SQLException: no such column: messages.number.digits: SELECT  "messages".* FROM "messages" INNER JOIN "numbers" ON "messages"."number_id" = "numbers"."id" WHERE "numbers"."user_id" = ?  ORDER BY "messages"."number.digits" ASC LIMIT 10 OFFSET 0

最佳答案

您需要使用includes。尝试:

@messages = current_user.messages.includes(:number).order('numbers.digits ASC')

关于ruby-on-rails - Rails 按父 belongs_to 关联中的字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32956400/

相关文章:

ruby-on-rails - 将附加参数传递给 Controller

sql - 新的 Ruby on Rails 开发人员需要帮助设置开发环境

ruby 显式方法返回类型

ruby - 如何在 Hirb 中强制垂直表或限制列?

ruby-on-rails - 使用 Rspec 测试回形针图像样式

ruby-on-rails - 未知验证器 : 'BeforeValidator' when validating date in Rails

ruby - 杰基尔服务不工作

sql - 从3个表中获取值而无冗余-SQLite

android - Sqlite 数据库中的 .db-shm 和 .db-wal 扩展名是什么?

iPhone,sqlite3,如何尽可能用几行代码确定一个表是否已经存在?