Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 父项中字段的Rails顺序属于关联_Ruby On Rails_Ruby_Sqlite_Sorting - Fatal编程技术网

Ruby on rails 父项中字段的Rails顺序属于关联

Ruby on rails 父项中字段的Rails顺序属于关联,ruby-on-rails,ruby,sqlite,sorting,Ruby On Rails,Ruby,Sqlite,Sorting,我的Rails应用程序中有三种型号,User、Number和Message: 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 < ActiveReco

我的Rails应用程序中有三种型号,
User
Number
Message

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
在我的控制器中:

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)
^不起作用。第二个参数必须是一个方向

顺序('number.digits':排序模式)
抛出:

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

您需要使用
包括
。尝试:

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

很抱歉,ActiveRecord为order生成了错误的SQL子句。请尝试使用“number.digits ASC”
。您可以将
sort_mode
变量修改为此格式的字符串,然后改用此格式。
@messages = current_user.messages.includes(:number).order('numbers.digits ASC')