在Rails ActiveRecord测试套件中使用Ruby 1.9 lambda文字会感到困惑

时间:2013-03-14 18:16:47

标签: ruby-on-rails ruby activerecord lambda

在尝试解决几乎没有相关的问题时,我在这个Rails ActiveRecord测试文件中遇到了一些代码: http://github.com/rails/rails/blob/master/activerecord/test/models/post.rb

belongs_to :author_with_posts, -> { includes(:posts) }, :class_name => "Author", :foreign_key => :author_id

我理解(或者我?) - > “箭头”创建了一个文字lambda,但我不知道这是一个有效的参数的集合或原因belongs_to(name,options = {})。我原以为这样:

belongs_to :author_with_posts, <something that results in a key/value pair>, :class_name => "Author", :foreign_key => :author_id

前面提到的文件充满了这个构造的实例,它显然工作正常,但我不知道为什么。我尝试使用 - &gt;我自己的(显然)类似的ActiveRecord关联中的语法,但它没有用,我得到了这个:

ArgumentError: wrong number of arguments(3 for 2)

好像我要么缺少一些非常基本的东西?或者也许post.rb代码还有更多东西可以满足眼睛?

1 个答案:

答案 0 :(得分:3)

实际上,最新版本中的belongs_to需要3个参数。

第二个参数是scope参数,它已在4.0.0版本中引入。

The Code for 4.0.0 is here,添加scope参数的提交是there

它不适合您,因为您最有可能使用rails 3.2.12。