导轨 - 在加盟模式,但与属性创建一个记录
问题描述:
我有一个连接模型我只是迁移叫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
你如何使用它是什么和选择? – 2011-01-11 00:09:04