如何在对象上调用`valid?`方法后收集错误?

时间:2014-08-23 19:19:14

标签: ruby validation

class Oauth
  RESPONSE_TYPE       = 'response_type'
  CLIENT_ID           = 'client_id'
  REDIRECT_URI        = 'redirect_uri'
  AUTHORIZATION_TOKEN = 'authorization_token'
  REQUIRED_PARAMS     = [RESPONSE_TYPE, CLIENT_ID, REDIRECT_URI]
  VALID_PARAMS        = REQUIRED_PARAMS

  attr_reader :errors

  def initialize(params)
    @params = params
    @errors = []
  end

  def valid?
    REQUIRED_PARAMS.all?{ |param| valid_params.has_key?(param) }
  end

  # private

  def valid_params
    @params.slice(*VALID_PARAMS)
  end
end

我想在调用missing #{param} key方法后收集valid?错误。

1 个答案:

答案 0 :(得分:0)

您可以尝试将OAuth对象设为ActiveModel,它的行为类似于ActiveRecord模型,但不通过数据库支持。 ActiveModel允许您像在AR模型中一样使用验证,因此同样可以获取验证错误。