根据单选按钮值验证表单字段

时间:2015-10-07 22:56:32

标签: ruby-on-rails activemodel

我没有使用ActiveRecords而是使用ActiveModel来验证表单数据。 我遇到了一些需要根据单选按钮值验证表单字段的问题。

我的模特是

 class Payment
    include ActiveModel::Model
    attr_accessor :method_id, :crad_name
    validates_presence_of :card_name, :if => :method_type? 

   private
   def method_type?
     self.method_id == 1
   end
 end

此处,信用卡的method_id = 1,银行的method_id = 2

这不会验证表单字段,也不会显示任何错误。

我在谷歌搜索并在这里获得了一些有价值的东西Rails - How to validate a field only if a another field has a certain value?

但在这种情况下它不起作用。提前感谢您的建议和帮助

2 个答案:

答案 0 :(得分:0)

你几乎就在那里。我首先要说的是,使用Method作为模型名称并不是一个好主意,因为它通常被认为是一个保留字。继续前进。

class Payment
  attr_accessor :method_id, crad_name
  validates_presence_of :card_name, :unless => :method_id.nil? 

end

答案 1 :(得分:0)

试试这个

class Payment
  include ActiveModel::Model
  attr_accessor :method_id, :crad_name
  validates_presence_of :card_name, :if => lambda { |pay| pay.method_id == 1 }
end

修改 试试这个或参考Active Record Validations

class Payment
  include ActiveModel::Model
  attr_accessor :method_id, :crad_name
  validates :card_name, presence: true, if: :method_type?

  private

  def method_type?
    method_id == 1
  end      
end

这应该是肯定的,或上帝帮助我!