Ruby on rails 如何在Rails中获得ApplicationRecord模型的验证约束?
我有一个类,看起来像:Ruby on rails 如何在Rails中获得ApplicationRecord模型的验证约束?,ruby-on-rails,ruby,rails-activerecord,Ruby On Rails,Ruby,Rails Activerecord,我有一个类,看起来像: class Account < ApplicationRecord validates :field, presence: true, inclusion:{ in: %w[foo bar baz bla] } end 是否存在类似的情况?如果是在enum中,它可能很简单,但在这种情况下,我找不到实现它的方法。如果您确实希望以有趣的方式实
class Account < ApplicationRecord
validates :field, presence: true,
inclusion:{
in: %w[foo bar baz bla]
}
end
是否存在类似的情况?如果是在
enum
中,它可能很简单,但在这种情况下,我找不到实现它的方法。如果您确实希望以有趣的方式实现这一点:
Account.validators_on(:field).detect { |validator| validator.is_a? ActiveModel::Validations::InclusionValidator }.options[:in]
这将返回一个字段数组
否则,虽然这不是您所寻找的黑魔法,但我会调整以下内容,使其更美观、更灵活:
class Account < ApplicationRecord
FIELD_OPTIONS = %w[foo bar baz bla].freeze
validates :field, presence: true,
inclusion:{
in: FIELD_OPTIONS
}
类帐户
然后,您可以通过帐户::字段\选项
轻松访问
有什么用?如果您有任何问题,请告诉我它们是否合适。第二个答案非常完美。你是怎么做到的?我这样问是因为感觉我在搜索引擎上搜索错误的关键词。我总是惊讶于Rails的直观性,查看我的原始帖子,答案似乎非常相似。使用
ls-G
:)对pry
进行了一点挖掘,这是查看其中内容的好方法。还有一个用例可供测试,这很有帮助。很高兴这是有用的-如果你有任何其他问题,大声喊。
class Account < ApplicationRecord
FIELD_OPTIONS = %w[foo bar baz bla].freeze
validates :field, presence: true,
inclusion:{
in: FIELD_OPTIONS
}