加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – ActiveRecord验证:关联的唯一性

发布时间:2020-12-17 04:38:11 所属栏目:百科 来源:网络整理
导读:我需要执行验证以确保公司内只有一个用户可以存在于给定的类别中. validates :user_id,:uniqueness = {:scope = [:category,:company_id],:message = "already exists"} 除了在以下位置设置错误消息之外,此方法有效:user_id key. 我怎么能这样做但是在:use
我需要执行验证以确保公司内只有一个用户可以存在于给定的类别中.
validates  :user_id,:uniqueness => {:scope => [:category,:company_id],:message => "already exists"}

除了在以下位置设置错误消息之外,此方法有效:user_id key.

我怎么能这样做但是在:user键上设置错误(验证:用户给出错误)?

解决方法

这是检查唯一性并强制将错误分配给:user属性的简单方法:
class User < ActiveRecord::Base
  validate :user_unique_per_company_per_category

  private

  def user_unique_per_company_per_category
    if self.class.exists?(:user_id => user_id,:company_id => company_id,:category => category)
      errors.add :user,'already exists'
    end
  end
end

我认为,如果您能找到一种方法来使用默认验证:user_id,那可能更好,但也许你有一个特殊的用例.

此外,如果您没有在表单中使用它,您可以考虑将错误分配给:base,因为您可能会混淆期望出现错误的未来开发人员:user_id:

errors.add :base,'already exists'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读