我有2種型號:的Rails的habtm並沒有關聯找到記錄
class User < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :users
end
我想打一個範圍(這一點很重要 - 對效率和能力鏈範圍),返回那並不是用戶t屬於ANY羣組。 多次嘗試後,我在做的方法,而不是範圍,這使得collect
上User.all
這是醜陋..不對的失敗。
任何幫助?
也許對於第二個問題: 我設法創建一個範圍,返回屬於任何給定組的用戶(作爲ID數組給出)。
scope :in_groups, lambda { |g|
{
:joins => :groups,
:conditions => {:groups => {:id => g}},
:select => "DISTINCT `users`.*" # kill duplicates
}
}
它可以更好/更漂亮嗎? (使用Rails 3.0.9)
謝謝,它訣竅:) – schiza
你需要DISTIN CT在這種情況下將不存在返回結果的連接關係,因此不會重複用戶? –
'DISTINCT'不需要。我添加了Rails 4及更高版本所需的新語法(我認爲)。 – slhck