验证外部gem的ActiveRecord模型的最佳方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证外部gem的ActiveRecord模型的最佳方法相关的知识,希望对你有一定的参考价值。
将验证添加到外部Gem的activerecord模型的最佳方法是什么?
module Library
class Model < ActiveRecord::Base
validates :field_active, inclusion: { in: [true, false] }
end
end
我想添加另一个validates
,例如
validates :me_too, presence: true
但由于它是外部宝石,所以不可能只在validates :field_active
下面添加它。
我想知道这样做的最佳做法是什么。 class_eval
是最好的方式还是不赞成?
答案
Ruby有所谓的“开放课程”。您可以打开任何类(在任何时候)并添加更多方法。这应该工作:
module Library
class Model
validates :me_too, presence: true
end
end
它打开已经定义的Library::Model
,只是添加了一行代码到那里已经存在(不替换/删除现有代码)。
请注意,这取决于Library::Model
已经加载(这不能保证)。这应该是一个更安全的选择:
Library::Model.instance_eval do
validates :me_too, presence: true
end
如果它尚未加载,它将触发加载Library::Model
。
以上是关于验证外部gem的ActiveRecord模型的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
如何向 Rails 4 中的所有 ActiveRecord 模型添加 `audited` 方法调用?
ActiveRecord 惰性加载,和使用gem faker