4

我怎样才能干掉我的验证码?我有一个Discussion具有 aacategorystatus字段的模型。状态值取决于类别值。category == 'question'例如,只能在 中具有状态的讨论STATUSES[:question]

  STATUSES   = {
    question:   %w[answered],
    suggestion: %w[pending planned started completed declined],
    problem:    %w[started solved]
  }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:question] },   if: lambda { self.category == 'question' }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:suggestion] }, if: lambda { self.category == 'suggestion' }
  validates :status, allow_blank: true, inclusion: { in: STATUSES[:problem] },    if: lambda { self.category == 'problem' }

我正在使用 Rails 3。

4

1 回答 1

5

:inclusion :in接受一个 lambda 本身:

validates :status, inclusion: { in: lambda { |o| STATUSES[o.category.to_sym] } }

文档:http ://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of

于 2012-10-26T16:54:28.610 回答