Rails 4.2中的连接范围

时间:2015-07-29 07:28:43

标签: ruby-on-rails join named-scope ruby-on-rails-4.2

我的代码类似于

class Article < ActiveRecord::Base
  has_many :comments
  scope :with_comments, joins(:comments)
end

基于this answer,但是当我在Rails 4.2中使用它时,我得到了

/Users/agrimm/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/activerecord-4.2.0/lib/active_record/scoping/named.rb:143:in `scope': The scope body needs to be callable. (ArgumentError)

在Rails 4和Rails 4.2之间是否允许在范围内允许连接的规则?我可以在4.2 release notes中看到联接的提及,但我不知道它是否适用于此。

3 个答案:

答案 0 :(得分:3)

  

范围正文需要可调用。 (引发ArgumentError)

这应该有效

scope :with_comments, -> { joins(:comments) }

一个很好的解释here

答案 1 :(得分:2)

你可以这样试试吗?

scope :with_comments, -> { joins(:comments)}

答案 2 :(得分:2)

你的语法错了。你应该这样做:

scope :with_comments, -> { joins(:comments) }

您应该查看此documentation