【发布时间】:2015-09-15 21:09:28
【问题描述】:
我有一个用户模型,它作为内部字段说some_internal_id。我不希望外部用户能够输入它(通过批量分配)。理想情况下,我不应该在 user_params 函数中允许它。
理想情况:
Create 方法分配内部参数,如下所示:
def create
user_params[:some_internal_id] = rand(100)
@user = User.new(user_params)
@user.save
end
# Never trust parameters from the scary internet, only allow the white list through.
# No need to permit some_internal_id param here
def user_params
params.require(:user).permit(:name, :age)
end
上面的代码抛出Unpermitted parameter: some_internal_id 错误。
以下工作,但看起来有点hacky
以下解决了我正在尝试做的事情,但看起来不是很干净的方法:
def create
@user = User.new(user_params)
@user.save
end
# Never trust parameters from the scary internet, only allow the white list through.
def user_params
params[:user][:some_internal_id] = rand(100)
params.require(:user).permit(:some_internal_id, :name, :age)
end
是否有更好的方法可以允许并在 create 方法中设置参数 - 靠近保存对象的位置?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 strong-parameters