我有一个邀请系统,允许用户提名其他人加入测试版。我需要验证用户发送邀请的电子邮件地址,并确保电子邮件地址是唯一的,但仅限于current_user
的邀请列表范围内。
换句话说,模型应该允许邀请系统中存在相同的电子邮件地址,但不允许在current_user
的邀请列表范围内复制。
我的UserModel
有:
has_many :invitations
validates_uniqueness_of :email
我的InvitationModel
有:
belongs_to :user
我无法将validates_uniqueness_of :email
放在InvitationModel
内,因为我需要在数据库中允许给定电子邮件地址的多个实例,但要确保每个实例都有唯一的发件人(用户)。 / p>
有关如何将验证限制在current_user
范围内的任何想法?
答案 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