【问题标题】:Limiting model validation to only records associated with the current_user in Rails 3.2将模型验证限制为仅与 Rails 3.2 中的 current_user 关联的记录
【发布时间】:2014-10-07 15:01:13
【问题描述】:

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

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

我的UserModel 有:

has_many :invitations

validates_uniqueness_of :email

我的InvitationModel 有:

belongs_to :user

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

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

【问题讨论】:

  • validates_uniqueness_of :email, scope: :user(_id)

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2012-03-29
    • 1970-01-01
    • 2018-10-02
    相关资源
    最近更新 更多