【发布时间】:2012-01-18 12:30:00
【问题描述】:
我已经定义了以下两个范围,并且都可以正常工作:
scope :regular_friends, lambda { |user| joins{friendships}.where{friendships.user_id.not_in(user)}}
scope :inverse_friends, lambda { |user| joins{inverse_friendships}.where{inverse_friendships.friend_id.not_in(user)}}
我在这里使用 squeel (https://github.com/ernie/squeel) 并建立一个自引用关联,其灵感来自 (http://railscasts.com/episodes/163-self-referential-association) .
基于此,我想定义第三个作用域,它将其他两个的结果联合起来:
scope :friends, lambda { |user| User.regular_friends(user).union(User.inverse_friends(user)) }
不幸的是,它不起作用。我得到一个:
NoMethodError (undefined method `default_scoped?' for #<Arel::Nodes::Union:0x8249534>):
我使用的是 Rails 3.1.3。我认为 default_scope? 方法已在 Rails 3.* 中删除,但它抱怨...
谁能帮忙?
【问题讨论】:
标签: ruby-on-rails-3 ruby-on-rails-3.1