如何将附加属性或参数传递给Controller中的Object.new

时间:2011-11-28 00:52:21

标签: ruby-on-rails model-view-controller

我有一个简单的

@redemption = Redemption.new(params[:redemption])

我需要传递:user_id => current_user.id进入这个新的Redem

我试过了:

 @redemption = Redemption.new(params[:redemption], :user_id => current_user.id)

这不会使用user_id构建Redemption ...

1 个答案:

答案 0 :(得分:1)

params是一个哈希,所以如果你想要create中的其他属性,只需将它们添加到params,例如:

params[:redemption][:user_id] = current_user.id

@redemption = Redemption.new params[:redemption]

或者,如果您想一次添加多个属性,请使用Hash#merge,例如:

redemption_params = params[:redemption].merge :user_id   => current_user.id,
                                              :some_attr => :foo

@redemption = Redemption.new redemption_params

但在这种特殊情况下,您可以使用更短的语法,例如:

current_user.redemptions.create params[:redemption]