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
,它应该总是以默认范围获得锦标赛的比赛。