2012-12-20 2 views
1

다형성 연관에 특정 객체가 포함되어 있는지 확인하는 방법을 찾고 있습니다.ROR : 다형성 연관에 객체 포함 확인

내 예

language.rb는 (사용 가능한 언어 목록이 본질적으로)

has_many :user_languages 

user_language.rb

belongs_to :language 
belongs_to :speakable, :polymorphic => true 

user.rb입니다

has_many :languages, :class_name => 'UserLanguage', :as => :speakable 

이제 사용자에게 특정 언어가 있는지 확인하고 싶습니다. 내가 가진 생각은

u = User.find(1) 
l = Language.find(1) 
u.languages.include?(l) 

의 형태로 include? 방법을 사용하는 것입니다하지만 항상 u.languages하지만 false는이 검사를 준비하는 적절한 방법이 될 것입니다 무엇

#<UserLanguage id: 1, language_id: 1, speakable_id: 1, speakable_type: "User">

를 제공 반환?

감사합니다. 문제는 바로 여기에 당신이 UserLanguageclass_name을 설정

has_many :languages, :class_name => 'UserLanguage', :as => :speakable 

때문에 거짓말처럼

답변

2

그것은 보인다 u.languages 당신에게 UserLanguage 객체하지 Language 개체의 집합을주고있다.

다음과 같이 user.rb 연결을 변경하면 u.languages에서 원하는 것을 제공해야합니다.

has_many :user_languages, :as => :speakable 
has_many :languages, :through => :user_languages 
+0

감사합니다. 내가 원했던 것을 정확히 수행한다! – paulus