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