【发布时间】:2013-11-13 10:16:43
【问题描述】:
我有两个模型 User 和 Item 与 has_many through 关联相关。我想创建没有项目的用户,但项目创建应该验证至少一个用户的存在。我通过以下方式创建项目:
@user.items.create!(name: "Ball")
如何在创建项目之前创建用户存在的有效验证?
我尝试了以下方法:
-
Item模型中的validate :users, presence: true -
validate :item_users, presence: true在Item模型中 -
validate :user, :item, presence: true在ItemUser连接模型中 -
Item模型中的validate :should_have_at_least_one_user具有执行error.add(:base, 'select at least one user') if self.users.count < 1的私有函数
这些方法都没有奏效。我认为问题在于某种竞争条件,因为当我按以下方式创建项目时,一些验证确实有效。
@item.new(name: "Ball")
@item.users << @user
@item.save
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby validation has-many-through