2013-10-29 29 views
0

Rails新手在這裏,Iam試圖使用用戶模型和事件模型之間的關聯。用戶可以創建許多事件。 Iam目前正在爲我的用戶模型使用設計。任何人都可以點我在正確的方向,所以我可以在我的事件模型中的USER_ID存儲在當前登錄的用戶,我當前的代碼如下:Rails爲用戶創建事件

//////活動控制器創建方法:

def create 

    @user = User.find(params[:user_id]) 
    @event = @user.events.create(params[:event].permit(:name, :date, :time, :description, :dresscode, :price, :avatar, :avatar2, :avatar3, :avatar4, :user_id)) 

    if @event.save 
     redirect_to @event 
    else 
     render 'new' 
    end 
    end 

回答

3

使用構建方法是這樣的

@event = current_user.events.build(params[:event]) 
+0

此外,由於您使用的是devise,因此您可以使用一個稱爲'current_user'的輔助方法,因此它可以是'current_user.events.build(params [:event])',並且不必設置實例變量'user' – trh

+0

是的,不要使用實例變量,只需在你的事件控制器中使用current_user helper並構建事件。 – LHH

0
class EventsController < ApplicationController 
    def create 
    @event = current_user.events.build(event_params) 

    if @event.save 
     redirect_to @event 
    else 
     render 'new' 
    end 
    end 

    private 

    def event_params 
    params.require(:event).permit(:name, :date, :time, :description, :dresscode, :price, :avatar, :avatar2, :avatar3, :avatar4, :user_id)) 
    end 
end 

提示:

  1. 設計給你一個current_user方法返回一個登錄的用戶。
  2. 您可以.build記錄通過協會沒有實際保存它們(如.create)會做(對於由has_many協會看到生成的方法引用the Rails API docs)。
  3. 習慣上將event_params提取爲可在createupdate操作中重複使用的方法。

希望這會有所幫助!