1)您可以創建自定義的驗證器類,其中包括加載ActiveModel從::驗證inheirting和實現一個validate方法,它記錄驗證:
class Report > ActiveRecord::Base
validates with MyValidator
end
class MyValidator < ActiveModel::Validator
def validate(record)
record.errors[:base] = << "Error" unless is_valid(record)
end
end
2)在Rails 3,有驗證宏,這意味着擴展ActiveModel :: EachValidator:
class Report < ActiveRecord::Base
validates :name :report_like => true
end
class ReportLikeValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
unless value["Report"]
record.errors.add attribute, "Does not appear to be a ..."
end
end
絕對不是「正常」,在您的模型中有1000行驗證代碼。 – Dty 2012-07-29 01:44:32
嗯,我猜正常不是正確的術語。一個更好的術語是合理的。我知道大多數情況下,你可以使用助手方法,也可以使用1個自定義助手(比如驗證電子郵件地址)幾行。然而,我正在處理的有很多小細節,根據您選擇的內容而有所不同。因此,爲了捕捉每一個小小的情況,代碼似乎很快就會膨脹起來。因此,我試圖將其移出模型。 – user1560348 2012-07-29 04:22:49