2015-07-29 4 views
0

У меня есть код, похожий наScope с соединениями в 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, но я не могу сказать, применимо ли оно здесь.

+2

Попробуйте 'Область применения: with_comments, -> {присоединяется (: комментарии)}' – Pavan

+0

это изменение в Rails 4. http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html – adamliesko

ответ

3

Область тело должно быть отозваны. (ArgumentError)

Это должно работать

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

Приятное объяснение here

2

Вы можете попробовать это так?

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

Ваш синтаксис является неправильным. Вы должны сделать следующее:

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

Вы должны взглянуть на этот documentation