在Rails中保存数据库之前修改表单参数

时间:2015-08-21 17:10:31

标签: ruby-on-rails

在我的Rails应用程序表单中,我有文本字段,其中用户键入ip_v4格式的ip地址,但ip_address的类型是文本。 IpAddress模型中的列类型在我的postgresql数据库中是inet类型。但是,如果我想保存ip_address_params,我必须将ip地址的字符串表示(例如“192.168.0.1”)转换为IPAddr对象 在设置强对数之前修改param [param] [param]的最佳方法是什么?我应该在控制器中添加before_action吗?

1 个答案:

答案 0 :(得分:0)

在模型中使用属性设置器:

class MyModel < ActiveRecord::Base
  def self.ip_text=(val)
    self.ip = IPAddr.new(val)
  end

  def self.ip_text
    self.ip.to_s
  end
end

然后在你的参数中使用ip_text而不是ip

 f.text :ip_text

或者反之亦然,在您的参数中使用ip,但如果您愿意,可以将数据库列名更改为ip_source或其他内容。