2015-08-21 212 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或其他東西,如果你喜歡的話。

相關問題