:symbols を有効に渡すことは可能ですか? オブジェクトが特定の時点まで有効かどうかを定義できるようにするためのメソッド?
例えば。オブジェクト Person があり、呼び出したいPerson.valid?(:basic_info)
場合、フィールドの特定のサブセット (名前と性別など) が存在する場合にのみ true を返しますか?
役に立つかもしれないと思ったものを見ましたが、それを機能させることができませんでした。働く...
誰でもここで私を助けてくれませんか...
:symbols を有効に渡すことは可能ですか? オブジェクトが特定の時点まで有効かどうかを定義できるようにするためのメソッド?
例えば。オブジェクト Person があり、呼び出したいPerson.valid?(:basic_info)
場合、フィールドの特定のサブセット (名前と性別など) が存在する場合にのみ true を返しますか?
役に立つかもしれないと思ったものを見ましたが、それを機能させることができませんでした。働く...
誰でもここで私を助けてくれませんか...
条件付き検証を使用してこれを機能させることができたので.valid?(:basic)
、その人が電話で名前を持っていることだけを確認したい場合に、sayを使用できます...
validates_presence_of :name, :when => [:basic]
ここのドキュメント:http://apidock.com/rails/ActiveRecord/Validations/valid%3F
.valid?
このようにして、名前がない場合でも、オブジェクトを呼び出すときにtrueを返すことができます。
検証basic_info
するには、カスタム バリデータを定義する必要があります。
class Person < ActiveRecord::Base
validate :basic_info_present
def basic_info_present
if name.blank? || gender.blank?
errors.add(:basic_info, "can't be in blank")
end
end
end
特定のフィールドにエラーがあるかどうかを確認したい場合は、@Salil のアプローチを使用できます。
ただしbasic_info
、モデルには実際の属性が呼び出されないため、ここでの検証エラーはフォームなどには表示されないことに注意してください (ただし、errors
ハッシュには含まれます)。それはあなたが望むものかもしれませんし、そうでないかもしれません。
このようなものはまだ存在していないと思いますが、次のように自分でメソッドを書くことができます
def is_valid_field?(field)
self.valid?
self.errors[field].blank?
end
そしてちょうどperson.is_valid_field?(:basic_info)