Ruby on rails 如何为活动记录对象设置嵌套数组中项目的顺序?

Ruby on rails 如何为活动记录对象设置嵌套数组中项目的顺序?,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,以下是我的代码: def show @tournament = Tournament.find(params[:id]) @tournament.games = @tournament.games.order(sort_column + ' ' + sort_direction) puts @tournament.games.inspect end 我正试着对锦标赛中的比赛进行分类。如果我执行put@tournament.games.order(排序列+''+排序方向)它将以正确的

以下是我的代码:

def show
  @tournament = Tournament.find(params[:id])
  @tournament.games = @tournament.games.order(sort_column + ' ' + sort_direction)
  puts @tournament.games.inspect
end

我正试着对锦标赛中的比赛进行分类。如果我执行
put@tournament.games.order(排序列+''+排序方向)
它将以正确的顺序返回游戏。但我似乎无法真正改变锦标赛。游戏。我试过分配,没有分配,
order
订单
不带
锦标赛中有很多游戏,对吗?如果是这样,以任何特定顺序获得游戏的唯一方法就是说
@tournament.games.order(…)
;SQL表是无序的行集合,如果您想按特定顺序排列这些行,则必须按顺序排列。@muistooshort我在
锦标赛.rb
中有很多游戏。问题是,当我调用
@tourbank.games.order(…)
(有或没有赋值)时,它实际上并没有对游戏进行排序(正如
放置@tourbank.games.inspect
显示的那样)。它只返回已排序的游戏。但是,获取该返回值并将其分配给
@锦标赛。games
也不起作用。作用域可能起作用,但您仍然需要传入参数。或者,我建议您可以使用
@games=@contraction.games.order(排序列+''+排序方向)
,并在视图中调用
@games
。如果您从浏览器中获得
排序列
排序方向
,请注意SQL注入附加。@feifeizhong
@games=…
方法有效,谢谢您指出这一点。但是,我想知道为什么
@tournament.games=…
不起作用,以及为什么没有赋值的
@tournament.games.order(…)
不起作用。您好@AdamZerner,
@tournament.games
,当您调用
@tournament.games
,它应该总是以默认范围获得锦标赛的比赛。