在尝试解决一个几乎不相关的问题时,我在这个 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
上述文件充满了这种构造的实例,它显然工作正常,但我不知道为什么。我尝试在我自己的(显然)类似的 ActiveRecord 关联中使用 -> 语法,但它不起作用,我得到了这个:
ArgumentError: wrong number of arguments(3 for 2)
看来我要么错过了一些非常基本的东西吗?或者 post.rb 代码可能比我们看到的更多?