0

私がやろうとしているのは、has_many関係を持つこのモデルのouting_locationsのすべてを返すメソッドを作成することです。

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

私は特にこのブロックを機能させようとしています。

OutingInviteと呼ばれる別のモデルがあり、特定のOutingのIDが含まれています。私はそれを使って適切な外出をつかみ、それからその外出の関連する外出場所を引っ張る必要があります。

大まかなサンプルは次のとおりです。

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

次に、各場所を出力します。

ただし、メソッド'outing_locations'が存在しないと言っています...

4

1 に答える 1

2

Soと入力すると、モデルに関連付けられたモデルを確認できます。model_instance.associated_model_name.この例では、outinghas_manyouting_locationsです。のインスタンスを作成した後、たとえばをouting使用して、その特定のに関連付けられているを確認するために@o = Outing.find(1)使用できますo.outing_locationsouting_locationsouting.

RubyonRailsガイドのこの例を参照してください。

編集

method 'outing_locations' does not existエラーが発生する理由はOuting.where(:id => invite.outing_id)、配列を返し、配列のouting_locationsメソッドがないためです。特定のインスタンスを取得するか(のようにOuting.find(invite.outing_id)、その配列で特定のインデックスを使用する必要があります。Outing.find(invite.outing_id)(私が想定している)あなたの外出のそれぞれが一意のIDを持っているので、私は使用することをお勧めします。

于 2012-06-26T23:58:25.350 に答える