我没有使用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?
但在这种情况下它不起作用。提前感谢您的建议和帮助
答案 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
这应该是肯定的,或上帝帮助我!