2011-04-15 66 views
1

兩種模式:字段和值。值使用accept_nested_attributes_for嵌套到字段如何驗證嵌套屬性的數量最少?

字段可以有多個值。該字段的屬性input_type是枚舉,可以是:text,:checkbox,:radio ou:select。這些值是爲該字段顯示的選項,因此,如果field.input_type是radio或select,那麼在字段中只使用一個值是沒有邏輯的。

在字段上使用驗證,我該如何防止插入只有一個值的字段?

感謝

回答

1

我不是你的問題100%清楚,但如果我理解正確的話,你要防止場地模型的實例,從如果只有一個關聯的值被保存?

class Field < ActiveRecord::Base 
    include ActiveModel::Validations 
    has_many :values 
    validates :values, :presence_of_multiple => true 
end 

class PresenceOfMultiple < ActiveModel::EachValidator 
    def validate_each(record, attribute, value) 
    record.errors[attribute] << "must have more than one." unless \ 
     value.exists? && value.count > 1 
    end 
end 

這將是最導軌上下的方式做到這一點,據我知道,但你也可以把它寫成被調用的before_validation回調的模型方法。實際上有很多方法可以做這種事情。