簡體   English   中英

如何在Rails中創建聯接表記錄,有很多:通過關系

[英]How to create join table record in Rails, has many: through relationship

類的userevent 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM