Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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 4更新了Lambda表达式,用于_Ruby On Rails_Lambda_Has Many_Ruby On Rails 4.1 - Fatal编程技术网

Ruby on rails Rails 4更新了Lambda表达式,用于

Ruby on rails Rails 4更新了Lambda表达式,用于,ruby-on-rails,lambda,has-many,ruby-on-rails-4.1,Ruby On Rails,Lambda,Has Many,Ruby On Rails 4.1,我将我的Rails应用程序从版本Rails 3.0更新为Rails 4.1,出现以下错误: ArgumentError: Unknown key: :order. Valid keys are: :class_name, :class, :for... 问题出现在以下行中: has_many :downloads, :dependent => :destroy, :order => "downloads.position DESC" 在谷歌做了一点调查后,这条线是这样的: has

我将我的
Rails
应用程序从版本
Rails 3.0
更新为
Rails 4.1
,出现以下错误:

ArgumentError: Unknown key: :order. Valid keys are: :class_name, :class, :for...
问题出现在以下行中:

has_many :downloads, :dependent => :destroy, :order => "downloads.position DESC"
在谷歌做了一点调查后,这条线是这样的:

has_many :downloads, :dependent => :destroy, -> {order('downloads.position DESC')}
现在我得到了一个错误:

syntax error, unexpected '\n', expecting tASSOC

我也尝试了其他的变化,但没有任何效果。希望您能帮助我。

更改lambda的订购将解决您的问题:

has_many :downloads, -> {order('downloads.position DESC')}, :dependent => :destroy

请注意,我将lamda移到了
:dependent=>:destroy
之前,它是一个散列(键值)。当您将lambda放在散列之后(散列没有用我的花括号{}分隔),Ruby将期望下一个值(即,在您的例子中为lambda)再次成为一个键值对,认为这是散列的延续,当它找不到下一个键值对时,它显然会抱怨,这就是您的情况。

更改lambda的顺序将解决您的问题:

has_many :downloads, -> {order('downloads.position DESC')}, :dependent => :destroy
请注意,我将lamda移到了
:dependent=>:destroy
之前,它是一个散列(键值)。当你把lambda放在散列之后(这不是我的花括号{})时,Ruby会期望下一个值(在你的例子中是lambda)再次成为一个键值对,认为它是散列的延续,当它没有找到下一个值作为键值对时,它显然会抱怨,这就是你的例子中发生的事情