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)再次成为一个键值对,认为它是散列的延续,当它没有找到下一个值作为键值对时,它显然会抱怨,这就是你的例子中发生的事情