模型 - 参考用于验证的非模型表单字段/参数?

时间:2012-05-28 15:01:08

标签: ruby-on-rails

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'

2 个答案:

答案 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