ruby-on-rails - 表单中的 Activemodel 日期验证和分配

标签 ruby-on-rails ruby validation date activemodel

我正在使用activemodel(不是activerecord,并且我有以下代码:

class PaymentForm
  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming 

  attr_accessor :agree_auto_renew, :card_owner, :address1, :address2, :address3, :address4, :postcode,
                :firstname, :surname, :dob, :email, :email_confirmation
  validates_presence_of :agree_auto_renew, :card_owner, :address1, :address2, :address3, :address4, :postcode
  validates_presence_of :firstname, :surname, :email, :email_confirmation, :if => :not_owner
  validates_date :dob, :if => :not_owner
  validates_confirmation_of  :email, :if => :not_owner

  private
  def initialize
    @errors = ActiveModel::Errors.new(self)
  end

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def not_owner
    ! self.card_owner
  end

  def persisted?
    false
  end

end

但是当我尝试验证表单时,我收到以下关于日期的 Rails 错误:

undefined method `dob(3i)=' for #<PaymentForm:0x007fe0379c3668>

如何使 activemodel 自动将 dob 元素转换为 dob 变量?

最佳答案

为此,Rails 4.2 有一个 Pull 请求。您可以深入了解https://github.com/rails/rails/pull/8189/files .

关于ruby-on-rails - 表单中的 Activemodel 日期验证和分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18507341/

相关文章:

ruby-on-rails - 如何使用 omniauth 对服务进行经过身份验证的调用?

Spring MVC 表单验证不起作用

php - 如何在验证 Controller 失败后启用提交按钮 - Laravel

ruby - 使用 Ruby 将大写字符串转换为标题大小写

ruby - 与 String 相比,在 Ruby 中使用 StringIO 有什么优势?

ruby-on-rails - Rails 数据库配置没有指定适配器。我该怎么办?

php - 当且仅当数组中的所有值都为真时才返回真?

mysql - Ruby on Rails 安装 - Ubuntu 15

ruby-on-rails - RubyOnRails 设计的单点登录策略

ruby-on-rails - RubyMine - 自动检测 .each、.map 和其他迭代器类型