2

製品とカテゴリの間にHABTM関係があります。これらのカテゴリはユーザーに属しています。

私の製品フォームでは、現在のユーザーのチェックボックスのみを表示しています。しかし、これをモデルでも検証したいので、ユーザーはPOST変数を偽造して、無効なカテゴリに割り当てることができません。

どうすればそのような検証を行うことができますか?

例:category_id 5が与えられた場合、このカテゴリがcurrent_user.id(deviseによって提供される)に属しているかどうかを確認する必要があります。

ありがとう。

4

1 に答える 1

1

モデルに追加できattr_accessor: creator_idます。Post(creator_idデータベースにありません)

そしてcurrent_user.id、フォームからPostのに送信しますcreator_id

次に、モデル コールバックを使用します。例after_validation:

after_validation do
  if User.find(creator_id).categories.pluck(:id).include?(category_id)
    true
  else
    errors.add :category, "is invalid for user"
  end
end
于 2012-05-01T17:21:24.767 に答える