我想返回自定义集合在我的模型范围之一.. 但我不知道为什么它显示错误时,我使用做我的lambda范围内的结束块.. 我是使用Rails 4.1.0和2.1.2的红宝石..Rails模型块内lambda范围错误
这里是我的模型在我的范围代码:
scope :date, -> (from_date, to_date) do
buff_matches = where match_start_time: from_date..to_date
matches = {}
buff_matches.each do |match|
buff_date = match.match_start_time.to_date.to_s
matches[buff_date] ||= []
matches[buff_date] << match
end
matches
end
它会显示在这条线的错误:buff_matches.each做|比赛|带有错误消息:SyntaxError:match.rb:15:语法错误,意外的keyword_do_block,期待keyword_end。
但是,如果我改变我的代码是这样的:
scope :date, -> (from_date, to_date) do
buff_matches = where match_start_time: from_date..to_date
matches = {}
buff_matches.each { |match|
buff_date = match.match_start_time.to_date.to_s
matches[buff_date] ||= []
matches[buff_date] << match
}
matches
end
它将正常工作。我想用do end语法,因为它看起来比使用大括号更干净。你有什么想法为什么发生这个错误?
除非你在括号括起来的范围参数不能使用做/结束这种修复它,并使用do..end块。这在这里有更详细的记录https://github.com/bbatsov/ruby-style-guide/issues/270 – infused 2014-09-01 06:11:11