nul*_*ull 65 ruby-on-rails strong-parameters
在Rails 3中,可以将属性插入到params中,如下所示:
params[:post][:user_id] = current_user.id
Run Code Online (Sandbox Code Playgroud)
我试图在Rails 4中做类似的事情,但没有运气:
post_params[:user_id] = current_user.id
. . . .
private
def post_params
params.require(:post).permit(:user_id)
end
Run Code Online (Sandbox Code Playgroud)
Rails忽略了这种插入.它不会抛出任何错误,它只是悄然失败.
nul*_*ull 137
在这里找到答案.您可以使用合并将其插入到params定义中,而不是从控制器操作中插入属性.扩展我之前的例子:
private
def post_params
params.require(:post).permit(:some_attribute).merge(user_id: current_user.id)
end
Run Code Online (Sandbox Code Playgroud)
Num*_*ers 36
除了@ timothycommoner的答案之外,您还可以基于每个操作执行合并:
def create
@post = Post.new(post_params.merge(user_id: current_user.id))
# save the object etc
end
private
def post_params
params.require(:post).permit(:some_attribute)
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45667 次 |
| 最近记录: |