2011-01-10 23 views
1

と私はちょうどのuser_id、event_idの、との意見と呼ばれる、私が作成した属性を持つと呼ばれるEventUsers移行した参加モデルがあります:文字列Railsの - 参加モデルでレコードを作成するが、属性

create_table :events_users, :id => false do |t| 
     t.integer :user_id 
     t.integer :event_id 
     t.string :opinion # extra attribute I made 
    end 

をし、私はjに追加することができます event.rb

has_and_belongs_to_many :users 

とuser.rb

has_and_belongs_to_many :events 

オインモデル

@user = User.find(session[:user_id]) 
    @event = Event.find(params[:id]) 
    @user.events << @event 

ですが、これを実行する前に......意見属性を文字列に設定して挿入するにはどうすればよいですか?

答えて

3

結合モデルに外部キー以外のフィールドがある場合は、HABTM関係を使用しないでください。あなたがそうのように関連する各モデルを意見などの中間モデルを作成している必要があります

class Event < ActiveRecord::Base 
    has_many :opinions 
    has_many :users, :through => :opinions 
end 

class User < ActiveRecord::Base 
    has_many :opinions 
    has_many :events, :through => :opinions 
end 

class Opinion < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :event 
end 

更新:意見を追加するために

は、あなたがそうRESTfulなインターフェースを作成することになるでしょう。私はどちらかのユーザー、イベント内のネストされたルートを追加することによって開始する、またはその両方

map.resources :users do |user| 
    user.resources :opinions 
end 

は、その後、あなたの標準のRESTfulなアクション(新しい、作成、編集、更新、など)と、対応するビューと意見コントローラを追加します。そこ標準安らかなインターフェイスを構築する方法についての資源のトンがありますが、私はこれらを開始します:

http://guides.rubyonrails.org/routing.html#resource-routing-the-rails-default

http://guides.rubyonrails.org/routing.html#nested-resources

+0

の選択とどのようにあなたがそれを使用しているとは何ですか? –

+0

私は愛というモデルを作りましたが、初期化されていない一定のエラーを投げたLofeへのLoveの特別なエラーがありました。 Personal.rb => \t(belongs_to:user; belongs_to:event)とuser.rb =>(has_many:personals; has_many:events、:through:>:personals)というモデルを作成しました。私は属性(:opinion)を不明な属性エラーとして扱い続けています。何か案は? – ChrisWesAllen

+0

@ user.events << Event.create(attrs)は新しいイベントを作成します.... – ChrisWesAllen

関連する問題