関連付けに関連付けられている 2 つのモデルがUser
あります。アイテムなしでユーザーを作成したいのですが、アイテムの作成では、少なくとも 1 人のユーザーの存在を検証する必要があります。私は次の方法でアイテムを作成します。Item
has_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_user
aItem
error.add(:base, 'select at least one user') if self.users.count < 1
これらのアプローチはどれもうまくいきませんでした。次の方法でアイテムを作成すると、いくつかの検証が機能したため、問題はある種の競合状態であると思います。
@item.new(name: "Ball")
@item.users << @user
@item.save
何か案は?