如何在保存Rails之前更改permit参数?

时间:2015-06-09 14:55:35

标签: ruby-on-rails ruby

我有下一个代码:

permitted = params.permit(:url, :title, :description, :post_type, :category_id)

我想在保存过程之前更改params [:url]。我试过了:

params[:url] = "abc"

但它没有改变这个值。如何在保存之前捕获并更改它?它进入了饲料控制器。我也尝试过:

params[:feed][:url]

但又一无所获。谁能给我一些提示?

2 个答案:

答案 0 :(得分:0)

您可以使用允许的参数初始化模型,然后根据需要更改其中任何一个:

m = Model.new(permitted)
m.url = "abc"
m.save

答案 1 :(得分:0)

我根据自己的需要使用以下方式。

before_save callback

在模型中定义。如果对给定字段中的数据应该有一般规则,那就很好。在大多数其他情况下,实际上,但这稍微复杂一些。

params.require(...).permit(...).merge(url: 'whatever')

这将获取您的参数并写入(覆盖)merge中给出的参数。它不必是一个键值对。我有时会用它来写时间戳。这是一个相当干净的技巧,但befoe_save应该受到青睐:当我不认为在模型上单独使用一个用例方法是值得的时候我只使用它。