ruby-on-rails - 如何在将参数发送到数据库之前对其进行修改
问题描述
我想在更新函数更新之前修改其中一个参数。
我可以提取价值做: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)
......
解决方案
我会使用该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/