1

:symbols を有効に渡すことは可能ですか? オブジェクトが特定の時点まで有効かどうかを定義できるようにするためのメソッド?

例えば。オブジェクト Person があり、呼び出したいPerson.valid?(:basic_info)場合、フィールドの特定のサブセット (名前と性別など) が存在する場合にのみ true を返しますか?

役に立つかもしれないと思ったものを見ましたが、それを機能させることができませんでした働く...

誰でもここで私を助けてくれませんか...

4

3 に答える 3

1

条件付き検証を使用してこれを機能させることができたので.valid?(:basic)、その人が電話で名前を持っていることだけを確認したい場合に、sayを使用できます...

validates_presence_of :name, :when => [:basic]

ここのドキュメント:http://apidock.com/rails/ActiveRecord/Validations/valid%3F

.valid?このようにして、名前がない場合でも、オブジェクトを呼び出すときにtrueを返すことができます。

于 2012-09-27T01:20:58.763 に答える
1

検証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ハッシュには含まれます)。それはあなたが望むものかもしれませんし、そうでないかもしれません。

于 2012-09-25T02:49:20.650 に答える
1

このようなものはまだ存在していないと思いますが、次のように自分でメソッドを書くことができます

def is_valid_field?(field)
  self.valid?
  self.errors[field].blank?
end

そしてちょうどperson.is_valid_field?(:basic_info)

于 2012-09-25T02:37:29.200 に答える