2012-12-24 65 views
1

我有一個對象產品,具有類別和一些其他屬性。 不同類別需要不同的屬性。每個屬性作爲required_attributes的數組。 我應該如何實現這一點? 我想是這樣的:檢查validates_presence_of屬性的變量集合

validates_presence_of lambda { *self.category.required_properties } 

我也tryed這一點:

def validate(record) 
    if record.category == nil 
     record.errors[:category] << "Has no Category" 
    else 
     recors.category.required_properties.each do |x| 
     .........????? 
     end 
    end 
end 

什麼是這樣做的最徹底的方法? 感謝

回答

0

你可以成立,如果它包含在列表爲當前的類別,檢查每個屬性的條件驗證:

[:attribute1, :attribute2, :attribute3].each do |attribute| 
    validates attribute, :presence => true, 
    :if => Proc.new { |product| product.category.required_properties.include?(attribute) } 
end 
0

試試這個:

validates :name, :presence => true 

validates :name, :presence => {:message => 'Name cannot be blank, Task not saved'} 

我們可以檢查使用如果record.category.present?

def validate(record) 
    if record.category.present? 
     record.category.required_properties.each do |x| 
     .........????? 
     end 
    else 
     record.errors[:category] << "Has no Category" 
    end 
end 
+0

併爲」 ..... ??? ?」我可以做一些像「validate_presents_of x」x是符號嗎? – kaibakker

+0

是的,你可以檢查**如果x.present?**或**如果x.some_property.present?** ....就像明智的 –