2012-05-28 87 views
0

的Rails 2.3.5模型 - 指的是用於驗證的非模型表單字段/參數?

說我只是想,如果一個複選框sub_report_active檢查來驗證sub_report_name的precense。但是,sub_report_active不是模型的一部分。這是一個表單字段和一個參數,但是一個check_bok_tag而不是一個模型字段。

您可以參考模型中不是模型字段的參數/ form_field(如下所示..我試過的任何形式的.excpet sub_report_active在模型中都不能識別)。

validates_presence_of :sub_report_name, :if=> sub_report_active == 'YES' 

回答

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 
+0

謝謝 - 試圖算出這個PROC將返回「#「而不是」YES「或」NO「(如果有問題,我在Ruby 1.87/Rails 2.3.5上) – Reno

0

這個工作(inlucding需要。向改變sub_report_active從check_box_tag到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