2015-02-07 3 views
0

나는이 레일에서 다음 협회 :Rails에 레코드가 있는지 확인하십시오.

:

belongs_to :company 
belongs_to :user 
validates_uniqueness_of :company_id, scope: user_id 

그래서, 나는 다음과 같은 있다고 상상 : 회원

회원에 그런

나는 다음과 같은 한을 통해

회사 has_many 사용자

company = Company.create 

그리고 사용자에게 회사를 추가하는 방법이 있습니다 (예 :

).
def add_user(user) 
    users << user 
end 

유효성 검사 예외가 발생하지 않도록 사용자가 회사와 관련이 없다는 것을 어떻게 확인할 수 있습니까?

지금 당장이 일을하고 있습니다. user << user unless users.include?(user)하지만 레일스 방식이 더 많은지 궁금합니다.

답변

0

당신은 중복 방지하기 위해 익명의 모듈을 사용하여 연결에 대한 액세스를 제어하는 ​​프록시 객체를 확장 할 수

class Company 
    has_many :users, through: :memberships do 
    def <<(*users) 
     super(*users - proxy_association.owner.users) 
    end 
    end 
end 

당신은 문서에서 액티브 레코드 협회 확장에 대한 자세한 내용을보실 수 있습니다 :

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#module-ActiveRecord::Associations::ClassMethods-label-Association+extensions

관련 문제