【问题标题】:Modify form params before saving in the database in Rails在 Rails 中保存到数据库之前修改表单参数
【发布时间】:2015-08-22 01:43:40
【问题描述】:

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

【问题讨论】:

  • 想想胖模型,瘦控制器。我认为这是您可以在 before_create 操作中在模型级别设置的内容。

标签: ruby-on-rails


【解决方案1】:

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

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 或其他名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2014-07-16
    相关资源
    最近更新 更多