我已经定义了以下两个作用域和两个工作罚款:联盟NoMethodError(未定义的方法`default_scoped“......?)
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?方法已在导轨3被移除*,但它抱怨说......
谁能帮助?
阿雷尔提供阿雷尔::节点:联盟和发现了一些例子使用联盟()方法,所以我想有一个。无论如何,我不知道如何设计朋友范围以正常方式返回其他范围的联合。 – Scholle
你可以随时使用原始的SQL的范围定义(我想这将是办法,如果你想在联盟) – maprihoda
看到我的最新答案 – maprihoda