我正在嘗試創建一個像User.not_in_project(project)
這樣的命名範圍,但我無法找到正確的方法。複雜的named_scope:查找不屬於某個項目的用戶
我有用戶,項目和義務爲連接模式:
class User < ActiveRecord::Base
has_many :duties, :extend => FindByAssociatedExtension
has_many :projects, :through => :duties
end
class Duty < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
class Project < ActiveRecord::Base
has_many :duties
has_many :users, :through => :duties
end
我試着用named_scope
類似這樣的發現條款:
User.all(:joins => :duties, :conditions => ['duties.project_id != ?', my_project])
但不返回用戶我誰沒有my_project
,但擁有除my_project
以外的項目的用戶。
換句話說,我想命名的範圍,表現得完全像這樣的方法:
def self.not_present_in p
self.all.reject{|u| u.projects.include?(p)}
end
我怎麼能這樣做?
你想回來什麼?我不清楚這一點。 – 2009-09-07 11:48:17
我想要一個與此方法完全相同的命名範圍: def self.not_present_in p self.all.reject {| u | u.projects.include?(p)} end 我希望它返回沒有將Project作爲參數傳遞的用戶。 請幫忙嗎? – 2009-09-07 15:39:57
我編輯了這個問題以包含上面的說明,因爲它包含源代碼。 – 2009-09-07 15:43:04