2012-02-01 3 views
0

나는 정의 범위를 가지고있는 대한 위치 모델을 가지고있다. 나는 다음과 같은 것을 할 수있다 : @ profile.positions.default 그리고 이것은 액티브 레코드 관계와 기본 위치 레코드를 반환한다. 문제는 .. 지금은 기본 기록을 가지고, 내가 같은 제목으로 포지션의 다른 속성에 액세스 할 필요가액세스 속성은

@profile.positions.default.title 

하지만 위의 오류 반환 : #

에 대한 정의되지 않은 메서드 '제목': NoMethodError을

실마리가 있습니까? 감사.

답변

1

범위는 collection의 개체가 아니라 하나의 개체가되므로 ActiveRecord 결과 배열에 title을 호출하려고합니다.

당신은 아마 이런 걸 원하는 :

@profile.positions.default.first.title 

을 또는 당신은 항상 하나 개의 기록을 원한다면, 당신은 클래스 메소드로 범위에서 전환 할 수 있습니다 : 다음

def self.default 
    where('is_default = ?', 1).first 
end 
+0

감사합니다. – absolutskyy

0
class Profile < ActiveRecord::Base 
    has_many :positions 
    has_one :default_position, :class_name => 'Position', 
          :conditions => ['is_default = ?', true] 
end 

@profile.default_position.title