【发布时间】:2016-02-19 06:26:53
【问题描述】:
我有一个模型 (Verification),我正在尝试验证其唯一性。
但是,我需要将唯一性限定为 status(enum),如下所示:
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 的列。
如何验证仅适用于主动验证的配置文件的唯一性?谢谢。
【问题讨论】:
-
是的,唯一性验证中的
scope关键字与Railsscope不同。它与SQL 更相关。
标签: ruby-on-rails ruby validation ruby-on-rails-4 activerecord