0

ユーザーモデルがあります。次のフィールドがあります。

attr_accessible :user_name, :first_name, :last_name, :email ....

6 つのブロックを持つユーザーのプロファイル ビューがあります。それらのそれぞれは、さまざまな分野に関連付けられています。ボックス 1 - first_namelast_name、ボックス 2 - user_nameemailなど。

すべてのフィールド (プレゼンス、フォーマットなど) を検証する必要があります。ただし、バリデーターは、特定のブロック (ボックス 1 またはボックス 2 など) に由来するフィールドに対してのみトリガーする必要があります。

次のようなものを書くと:

validates :user_name, :presence => true

*user_name* でブロックを編集しません。「ユーザー名を空白にすることはできません」というエラーが表示されます。*:allow_blank => true* または nil は使用できません (!) 空白にすることはできません!

2 つの言葉で言えば、リクエストから過去のものであるフィールドのみを検証する必要があります。

問題を解決するために何ができますか? どうも

4

2 に答える 2

0

特定の条件を追加ifまたはunlessスキップするオプションを追加できます。

validates :user_name, :presence => true, :if => "first_name.blank? and last_name.blank?"
于 2012-12-22T16:04:10.197 に答える
0

モデルから特定のフィールドを引き出して、ブロックごとにモデルを作成してから、1 対 1 の関係を User モデルに追加できます。

于 2012-12-22T16:30:34.400 に答える