2015-08-21 29 views
1

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

+2

认为脂肪模型,皮包骨头的控制器。我认为这是您可以在before_create动作中在模型级别设置的内容。 –

回答

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 

然后使用您的PARAMS ip_text而不是ip

f.text :ip_text 

,或者相反,使用ip在你的参数,但更改数据库的列名称ip_source或其他东西,如果你喜欢的话。

相关问题