我建立了一个search
模式,并且要至少需要一个字段填写。 我发现一个问题,利用有效的帮助, Rails的:如何要求至少一个字段不为空 。 (我尝试了所有的答案,但Voyta酒店的似乎是最好的。)
验证工作,除非我要重新通过的getter / setter attr_accessor
或attr_writer
。 (我有需要分开验证的形式虚拟属性)。为了弄清楚是什么问题,我与是一个普通的属性的属性测试item_length
。 如果我添加attr_accessor :item_length
,验证停止工作。 所以,我想这个问题是我如何不使用点符号读取属性的值。 由于验证使用字符串,我不能使用的阅读正常的方式。
这里是一个片段:
if %w(keywords
item_length
item_length_feet
item_length_inches).all?{|attr| read_attribute(attr).blank?}
errors.add(:base, "Please fill out at least one field")
end
就像我说的,虚拟attrbutes(length_inches和LENGTH_FEET)不会在所有的工作,而通常属性(长度)的作品,除非我重新定义的getter / setter。