【问题标题】:ActiveRecord: Validating inherited classes via parentActiveRecord:通过父类验证继承的类
【发布时间】:2014-06-18 04:58:11
【问题描述】:

我有一个 activerecord 模型 Connection,它继承了 SSH、S3、Local 等模型。我对这些子模型有不同的存在验证。

在我看来,我有一个连接类型的“类型”下拉菜单,它根据所选类型显示/隐藏不同的字段。保存后,控制器将参数保存为连接类型模型。

问题在于,当 save 方法在父 (Connection) 类的实例上运行时,尽管“type”设置为必要的值,但并未检查相关的子验证。

我可以通过一个开关来解决这个问题,该开关根据“类型”的值保存模型的新实例,但不知何故这似乎不雅。 ...那么,有没有更优雅的方法来确保当我的 Connection 模型以(比如说)“SSH”类型的值保存时,“SSH”验证在该模型上运行?

【问题讨论】:

    标签: ruby-on-rails validation activerecord


    【解决方案1】:

    你可以试试becomes方法

    instance.becomes(OtherObject)
    

    它返回具有当前记录属性的指定'klass'的实例。

    http://apidock.com/rails/ActiveRecord/Persistence/becomes

    比 switch 优雅一点。

    另一个想法,调用正确的控制器 - 动态更改表单的 url。

    【讨论】:

      猜你喜欢
      • 2011-07-30
      • 2020-06-06
      • 1970-01-01
      • 2014-03-17
      • 2015-03-14
      • 2019-04-11
      • 2023-02-15
      • 2014-03-01
      • 2023-03-27
      相关资源
      最近更新 更多