Rails 2.3.5
如果选中复选框sub_report_name
,我只想验证sub_report_active
的前置位置。但是,sub_report_active
不是模型的一部分。它是一个表单字段和一个参数,但是check_bok_tag
而不是模型字段。
你能否在模型中引用一个不是模型字段的参数/ form_field(如下所示... .excpet sub_report_active
我试过的任何形式都无法在模型中识别。)< / p>
validates_presence_of :sub_report_name, :if=> sub_report_active == 'YES'
答案 0 :(得分:0)
我不知道你可以,但是你可以通过使用attr_accessor轻松使成为模型字段而不需要相应的数据库列:
class YourModel < ActiveRecord::Base
attr_accessor :sub_report_active
validates_presence_of :sub_report_name, :if => proc{ |m| m.sub_report_active == 'YES' }
end
答案 1 :(得分:0)
这很有效(需要将check_box_tag中的sub_report_active更改为f.check_box。
class Report < ActiveRecord::Base
attr_accessor :sub_report_active
validates_presence_of :sub_report_name, :if => :sub_report_active_yes?, :message => " must be entered if 'Sub Report Active?'' is checked."
def sub_report_active_yes?
sub_report_active == 'YES'
end
End