私は、ユーザーがbelongs_toというプロファイルというモデルを持っています。そのため、データベースが追跡する 'user_id'があります。ローカル管理インターフェイスでは、私は管理者が編集画面のフィールドにユーザー名を入力し、コントローラに保存するためのuser_idすることを解決することを可能にする柔軟性を提供したかったこのモデルのために作られました。質問があるしかしアソシエーションが有効であることを確認する方法
は、どのように私は、ユーザー名が有効なリターンを持っていることに対して、チェックしますか? ActiveRecord :: Validationには、関連の存在を検証するメソッドがないことがわかりました。このような状況にどう対処しますか?
アップデート:私は何をしたいが、私は戻って管理者が編集しているプロファイルへのUSER_IDを救うことができる、フォームにユーザー名フィールドが実際に本物のユーザーであることを検証することです。ここで 'return'は返されたユーザオブジェクトを意味します。
user_idがオプションの場合はどうですか?ここではプロフィールは誰にも属しません。 – itsnotvalid
これを達成する方法はたくさんあります。ユーザー名が存在しない場合は、nilではなく0を返すように、username =()を変更することができます。この場合、値が== 0であるかどうかを確認し、オブジェクトを無効にすることができます。 検証:ensure_username_exists DEF =(値) self.user_id = User.find_by_username(値)をユーザ名|| 0 最後のuser_id == 0#nilには エラーが許可されている場合 はデフ をensure_username_exists保護 。add(:user_id、 "Username does not exist") falseを返す end end これはほんの一例です。 –
申し訳ありません。私は例を書いたが、コメントにはコードを入れることはできないようだ。 :S –