2010-12-28 3 views
1

기본적으로 첫 번째 모델 내의 관련 모델에서 애트리뷰트의 별칭을 만들고 싶습니다. 내 모델은 다음과 같습니다.레일스에서 ​​모델 내에서 연관된 모델의 속성을 얻는 방법

class Ingredient < ActiveRecord::Base 
    belongs_to :tag 
end 

class Tag < ActiveRecord::Base 
    has_many :ingredients 
end 

태그 테이블에 "이름"이라는 열이 있습니다. 나는 ingredients.name을 얻기 위해 ingredient.tag.name을 호출 할 수 있기를 원합니다. 나는 재료의 "이름"에 대한 getter/setter 메서드를 만들려고했지만 Tag의 "name"특성을 가져 오는 방법을 모르겠습니다. 압둘라의 대답 동일

+0

ingredient.tag.name이 작동해야합니다. 무슨 성분이 나옵니까? 참고로, 당신은 이것을 위해 많은 것을 많이 사용하지 않아야합니까? – mark

+0

예, ingredient.tag.name은 작동하지만 동일한 결과를 얻으려면 ingredient.name을 호출 할 수 있기를 원합니다. ingredients.tag.class는 Tag 클래스를 반환합니다. 예, "태그"의 클래스 이름은 약간 오해의 소지가 있습니다. 위의 매핑이 필요한 것입니다. – weotch

답변

3
class Ingredient < ActiveRecord::Base 
    belongs_to :tag 

    def name 
     tag.name 
    end 
end 
+0

Ingredinent 클래스 자체에서 해당 이름을 호출하는 방법은 무엇입니까? – lnguyen55

1

한 - 라이너 delegate하는 것입니다 :

당신이 한 줄에 모두 일을 걱정합니다.

+0

편집 경로에서 이것을 사용하면 "Ingredient # name to tag.name, delegate to nil"이 표시됩니다. – weotch

+0

@weotch : 음, 이것은 단순히 태그가 nil이라는 것을 의미합니다. Abdullah 's way를 시도했다면 nil : nilClass'에 대해'undefined method \'name '을 얻을 것입니다. –

관련 문제