导轨 - 在加盟模式,但与属性创建一个记录

问题描述:

我有一个连接模型我只是迁移叫EventUsers有一个USER_ID,事项标识,属性我创造了所谓的意见:字符串导轨 - 在加盟模式,但与属性创建一个记录

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

和 event.rb

has_and_belongs_to_many :users 

和user.rb

has_and_belongs_to_many :events 

我可以添加到第j oin模型与

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

但在我做之前......如何设置意见属性为一些字符串,然后插入?

如果您的连接模型具有除外键以外的任何字段,那么您不应该使用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操作(新,创建,编辑,更新等)和相应的意见添加意见控制器。有关于如何建立一个标准的RESTful接口万吨的资源,但我会与这些开始:

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

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

+0

你如何使用它是什么和选择? – 2011-01-11 00:09:04