1

関連付けに関連付けられている 2 つのモデルがUserあります。アイテムなしでユーザーを作成したいのですが、アイテムの作成では、少なくとも 1 人のユーザーの存在を検証する必要があります。私は次の方法でアイテムを作成します。Itemhas_many through

@user.items.create!(name: "Ball")

アイテムを作成する前に、ユーザーの存在を有効に検証するにはどうすればよいですか?

私は次のアプローチを試しました:

  • モデルvalidate :users, presence: trueの_Item
  • モデルvalidate :item_users, presence: trueの_Item
  • 結合モデルvalidate :user, :item, presence: trueのaItemUser
  • プライベート関数を持つモデルのvalidate :should_have_at_least_one_useraItemerror.add(:base, 'select at least one user') if self.users.count < 1

これらのアプローチはどれもうまくいきませんでした。次の方法でアイテムを作成すると、いくつかの検証が機能したため、問題はある種の競合状態であると思います。

@item.new(name: "Ball")
@item.users << @user
@item.save

何か案は?

4

1 に答える 1