2012-06-26 4 views
0

내가하려고하는 것은 has_many 관계가있는이 모델의 모든 outing_locations를 반환하는 메서드를 작성하는 것입니다.Rails 모델 메서드를 작성하여 연결 목록을 반환하는 방법은 무엇입니까?

class Outing < ActiveRecord::Base 
    attr_accessible :description, :end_time, :start_time, :title, :user_id 

    belongs_to :user 
    has_many :outing_locations 
    has_many :outing_guests 
    has_one :time_range, :foreign_key => "element_id", :conditions => { :element_type => "outing" } 

    validates :title, :presence => true 
    validates :start_time, :presence => true # regex 
    validates :end_time, :presence => true # regex 

    def host_name 
    return User.find(self.user_id).full_name 
    end 


end 

저는이 블록을 특히 작동 시키려고합니다.

특정 나들이의 ID를 포함 OutingInvite라는 또 다른 모델이있다. 적절한 외출을 움켜 잡기 위해 그것을 사용해야하고 외출과 관련된 외출 장소를 당겨야합니다.

여기에 거친 샘플입니다 :

<%@outing_invites.each do |invite|%> 
... 
    <% @party = Outing.where(:id => invite.outing_id) %> 
    <% @party.outing_locations.each do |location| %> 

그리고 각 위치가 출력합니다.

그러나, 당신은, 당신의 예에 따라서 model_instance.associated_model_name.를 입력하여 outing has_many outing_locations을 모델의 관련 모델을 볼 수 있습니다 ... 방법 'outing_locations은'존재하지 않는

답변

2

을 말하는. 당신이 outing의 인스턴스를 설정 한 후 @o = Outing.find(1)를 사용하여, 당신은 다음 레일 가이드에 루비에서 this example를 참조하십시오 특정 outing.

과 관련된 outing_locations을 볼 수 o.outing_locations을 사용할 수 있습니다 말한다.

편집

이유는 Outing.where(:id => invite.outing_id) 배열을 반환하고 배열에 대한 outing_locations 방법이 없기 때문에 method 'outing_locations' does not exist 오류가 있어요. 특정 인스턴스 (예 : Outing.find(invite.outing_id)를 가져 오거나 해당 배열의 특정 인덱스를 사용해야합니다. 나는 당신의 소풍 각각이 유일한 ID를 가지고 있기 때문에 (나는 추측하고있다) Outing.find(invite.outing_id)을 사용하도록 권장한다.

+0

그게 내가 생각한 것입니다. 정확히 무엇을하려고하는지, 그리고 내가 가지고있는 문제를 설명하기 위해 더 많은 코드를 추가했습니다 ... –

+0

내 대답이 업데이트되었습니다. 보시고 도움이되는지 확인하십시오. – Zajn

+0

Outing.find는 괜찮을 것입니다. –

관련 문제