これは私のUser
モデルです:
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :token_authenticatable, :confirmable, :timeoutable,
:recoverable, :rememberable, :trackable, :validatable,
:email_regexp => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :confirmed_at, :confirmation_token, :category_ids
validates_uniqueness_of :email, :case_sensitive => false
validates_confirmation_of :password
end
私がしたいのは、「アクティブ化された」アカウントに「category_ids」の存在を強制することです。
私はEメールのみのサインアップを行っています。これは2段階のプロセスであるため、注意することが重要です。ユーザーが初めて自分の電子メールアドレスを入力すると、Confirmations
コントローラーへのリンクが記載されたアクティベーション電子メールが送信されます。
そのビューにConfirmations Controller
は、検証する必要のある追加の詳細が含まれています。
モデルで通常の操作を行ったvalidates_presence_of
場合User
、ユーザーが最初にメールアドレスだけを送信すると、Railsは失敗します(これは望ましくありません)。
ユーザーは次のことを行う必要があります。
- メールアドレスを入力してください
- メールの確認/アクティベーションリンクをクリックします
- 名前、パスワードを入力し、カテゴリを選択します。
- 送信。
ステップ3、Deviseはnameとpwにpresence_of_validationを適用します。しかし、私のカスタムアイテムではありませんcategory
。
それ、どうやったら出来るの?
ありがとう。