[英]How to create join table record in Rails, has many: through relationship
類的user
和event
has many: through
關系。
class User < ActiveRecord::Base
has_many :user_events
has_many :events, :through => :user_events
end
class Event < ActiveRecord::Base
has_many :user_events
has_many :users, :through => :user_events
end
在我的事件控制器中,我想為User_events創建一條記錄,我現在使用以下命令進行記錄:
def create
@event = Event.new(event_params)
@user = User.find(current_user.id)
@user_events = User.user_events.create
@user_events.user_id = @user.id
@user_events.event_id = @event.id
end
但是,這感覺很沉重,因此我認為有一種更好,更“ Rails的方式”來做到這一點。 正確的方法是什么?
def create
@event = Event.new(event_params)
if @event.save
@event.users << current_user
redirect_to event_path(@event)
else
render action: :new
end
end
def create
@event = Event.new(event_params)
@event.users.add(User.find(current_user.id))
@event.save # I guess that you want to save the relation
end
這取決於參數帶來了什么以及如何格式化。 如果它是一個表單提交並且帶有一個user_id,那么您應該能夠創建事件
用戶= User.find(params [:user_id])user.events << Event.new(params [:event])
如果要將其添加到current_user中:
current_user.events << Event.new(params[:event])
如您所見,這完全取決於參數的傳遞方式以及從何處獲取用戶。
這些是一些選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.