【问题标题】:rails validation uniqueness with respect to associated column关于关联列的rails验证唯一性
【发布时间】:2021-12-08 22:14:00
【问题描述】:

我想根据关联列验证模型列

app/models/filter.rb

belongs_to :filter_set
validates_uniqueness_of :name, scope: %i[filter_set.organization_id]

app/models/filter_set.rb

has_many :filters

我想针对关联的 organization_id 添加过滤器类型的验证。我找不到任何可以验证关联键的方法

【问题讨论】:

  • validates_uniqueness_of 只能用于根据 this 模型表设置条件。你想要做的事情需要加入。这个问题真正应该告诉您的是您没有正确建模数据 - 您很可能缺少过滤器和 filter_sets 之间的连接表,它可以让您将过滤器用作规范化表。您需要记住,应用程序级别的验证很容易出现竞争条件,并且需要使用数据库约束来强制执行,这对于您在这里拥有的任何东西来说都是非常困难的。

标签: ruby-on-rails ruby validation ruby-on-rails-5


【解决方案1】:

我认为,使用belongs_to,这个过滤器只能属于_to一个filter_set,所以:

validates :name, uniqueness: { scope: :filter_set_id }

会成功的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多