モデルを設定し、search
少なくとも1つのフィールドに入力する必要があります。Railsの検証に役立つ質問を見つけました。少なくとも1つのフィールドを空白にしないようにする方法。(私はすべての答えを試しましたが、Voytaのものが最高のようです。)
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
私が言ったように、仮想属性(length_inchesとlength_feet)はまったく機能せず、ゲッター/セッターを再定義しない限り、通常の属性(length)は機能します。