ruby-on-rails - 如何仅向 singleton_class 添加验证?

标签 ruby-on-rails ruby-on-rails-3 activemodel

当我向 singleton_class 添加验证时,它似乎被分配给了基类,并且它不会触发任何一个。

class Example
  attr_accessor :title, :some_boolean
  include ActiveModel::Validations
end


puts Example.validators  # []

with_validations = Example.new
with_validations.singleton_class.send :validates, :title, :presence => true

puts with_validations.valid?  #true

puts Example.validators.length # 1

我希望发生的事情:

with_validations.valid?  # false
Example.new.valid?       # true

最佳答案

您可以使用“on”选项进行验证。

validates :title, presence: true, on: :draft

example = Example.new
example.valid? # true
example.valid?(:draft) #false

关于ruby-on-rails - 如何仅向 singleton_class 添加验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18284056/

相关文章:

ruby-on-rails - ruby 如何允许同名的方法和类?

ruby-on-rails-3 - Rails 3自定义验证: Highlighting offending fields

ruby-on-rails - ActionView::Template::Error 未定义方法

ruby-on-rails - 如何生成模型之间的关联

ruby-on-rails - 验证消息助手或检索验证错误

ruby-on-rails - searchlogic 和其他全文搜索插件有什么区别?

ruby-on-rails - after_create :foo vs after_commit :bar, :on => :创建

ruby-on-rails - 什么时候在模型中使用 self ?

ruby-on-rails - 如何在 Rails 模型的回调中访问参数?

ruby-on-rails - 如何确定after_save中的记录是刚刚创建还是更新