gpt4 book ai didi

ruby-on-rails - 如何验证自定义范围事件记录 rails 4 的唯一性

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:17 24 4
gpt4 key购买 nike

我有一个模型(Verification),我正在尝试验证其唯一性。

但是,我需要将唯一性限定为状态(枚举),如下所示:

class Verification < ActiveRecord::Base

belongs_to :profile

scope :active, -> { where('status NOT IN (?)',
['approved', 'rejected'].map{ |s| self.statuses[s]
}
) }

validates :profile, uniqueness: { scope: :active,
message: "can have only one active per time." }

enum status: [:requested, :processing, :approved, :rejected]

end

我不希望一份个人资料同时拥有多个有效验证。

但是当我像上面那样做时,它会引发错误,因为在我的 verifications 表中没有名为 active 的列。

如何验证仅针对主动验证的配置文件的唯一性?谢谢。

最佳答案

是的,唯一性验证中的范围关键字与 Rails 范围不同。它与 SQL 更相关,并且通常仅限于一个属性名称(或一组属性名称)。

看起来你也可以通过 conditions 传递一个 block ,例如:

validates_uniqueness_of :profile, conditions: -> {  
where('status NOT IN (?)',
['approved', 'rejected'].map{ |s| self.statuses[s] }
)
}

关于ruby-on-rails - 如何验证自定义范围事件记录 rails 4 的唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35498678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com