如何在将参数发送到数据库之前对其进行修改

时间:2019-10-04 14:21:24

标签: ruby-on-rails ruby ruby-on-rails-5

我想在更新功能中修改其中一个参数,然后再进行更新。

我可以执行以下操作来提取值:abort house_show_params[:pricing_option].inspect,但我想对其进行修改。

我尝试过:

house_show_params[:pricing_option] = 5
house_show_params.update_attribute(pricing_option: 5)

那没有用。

更新功能

def update
    @house_show = current_user.house_show
    respond_to do |format|
      if @house_show.update(house_show_params)
         ......

1 个答案:

答案 0 :(得分:0)

我会使用write_attribute方法在模型中完成此操作(控制器不是正确的位置)。
例如,如果我想在存储之前删除company_name字段,则可以(在我的模型中)这样做:

def company_name=(value)
  self[:company_name] = value&.strip
end

这与操作相同(您可以选择自己喜欢的任何方式):

def company_name=(value)
  my_model.write_attribute(:company_name, value&.strip)
end

尽管您应该使用上面的两个示例来回答您的问题,但是该页面说明了您所拥有的选项: https://davidverhasselt.com/set-attributes-in-activerecord/