如何将控制器变量添加到rails中的数据库行?

时间:2013-10-10 20:50:27

标签: ruby-on-rails activerecord

我想使用activerecord和rails将控制器中的变量添加到数据库行。

要做到这一点,我现在必须在我的视图中添加一个隐藏的输入标记,其中包含添加该行的成员的用户名。然后,我的控制器将该标签拾取并添加到数据库中。

这是我隐藏的输入字段:

<% f.hidden_field(:uploader, value: @current_user.username) %> 

这是创建建筑物的代码

def create # (post) Add new records
    @bld = Building.new(params[:bld].permit(:name, :uploader, :description, :down_link))

    if @bld.save
      redirect_to my_buildings_url, :alert => 'Here\'s your new building!'
    else
      render :new
    end
end

有没有办法消除我的隐藏输入标记,并将@current_user.username的值添加到控制器的数据库行中(如果你知道我的意思)?

1 个答案:

答案 0 :(得分:0)

这将在控制器操作中完成,因为当前用户将是登录的人。因此在您的创建操作中。

def create # (post) Add new records
    @bld = Building.new(params[:bld].permit(:name, :description, :down_link))
    @bld.uploader = current_user.username

    if @bld.save
      redirect_to my_buildings_url, :alert => 'Here\'s your new building!'
    else
      render :new
    end
end

但是,最好定义一个名为 uploader 的关联来调用您的用户模型。然后你要存储的只是一个整数。你也不要打开params欺骗。