Rails为用户创建事件

时间:2013-10-29 20:46:59

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems

Rails新手在这里,我试图使用用户模型和事件模型之间的关联。用户可以创建许多事件。 Iam目前正在为我的用户模型使用设计。任何人都可以指出我正确的方向,所以我可以将user_id存储在当前登录用户的事件模型中,我的当前代码如下:

//////事件控制器创建方法:

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

2 个答案:

答案 0 :(得分:3)

使用像这样的构建方法

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

答案 1 :(得分: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. Devise为您提供了一个current_user方法,用于返回已登录的用户。
  2. 您可以.build通过关联记录而不实际保存它们(如.create)那样(有关has_many关联生成的方法的参考,请参阅the Rails API docs )。
  3. 习惯上将event_params提取到您可以在createupdate操作中重复使用的方法。
  4. 希望这有帮助!