我有一个activerecord模型,Connection,它继承了SSH,S3,Local等模型。我在这些子模型中有不同的状态验证。
在我看来,我有一个"类型"连接类型的下拉列表,根据所选类型显示/隐藏不同的字段。保存后,控制器将参数保存为连接类型模型。
问题在于,当在父(Connection)类的实例上运行save方法时,不会检查相关的子验证,尽管" type"被设定为必要的价值。
我可以通过一个开关来解决这个问题,该开关根据" type"的值来保存模型的新实例,但不知何故看起来不那么优雅。 ...那么,是否有一种更优雅的方法可以确保当我的Connection模型保存时值为(让我们说)' SSH'对于类型,' SSH'验证在该模型上运行?
答案 0 :(得分:1)
您可以尝试使用becomes
方法
instance.becomes(OtherObject)
它返回指定' klass'的实例。具有当前记录的属性。
http://apidock.com/rails/ActiveRecord/Persistence/becomes
比开关更优雅。
另一个想法是,调用正确的控制器 - 动态更改表单的URL。