将模型验证限制为仅与Rails 3.2中与current_user关联的记录

时间:2014-10-07 15:01:13

标签: ruby-on-rails-3 validation rails-activerecord

我有一个邀请系统,允许用户提名其他人加入测试版。我需要验证用户发送邀请的电子邮件地址,并确保电子邮件地址是唯一的,但仅限于current_user的邀请列表范围内。

换句话说,模型应该允许邀请系统中存在相同的电子邮件地址,但不允许在current_user的邀请列表范围内复制。

我的UserModel有:

has_many :invitations

validates_uniqueness_of :email

我的InvitationModel有:

belongs_to :user

我无法将validates_uniqueness_of :email放在InvitationModel内,因为我需要在数据库中允许给定电子邮件地址的多个实例,但要确保每个实例都有唯一的发件人(用户)。 / p>

有关如何将验证限制在current_user范围内的任何想法?

1 个答案:

答案 0 :(得分:0)

听起来你需要验证范围。这将允许多次使用相同的电子邮件地址,但每个用户只能使用一次。

validates_uniqueness_of :email, scope: :user_id

此外,由于电子邮件地址不区分大小写,我建议对范围添加不敏感性。

validates_uniqueness_of :email, scope: :user_id, case_sensitive: false

引用:http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_uniqueness_of