我正在做一个 RoR 项目,我想对我的一个模型进行唯一性验证,以检查自定义范围:
class Keyword < ActiveRecord::Base
belongs_to :keyword_list
scope :active, -> { where("expiration > ?", DateTime.now) }
validates :name, uniqueness: { scope: [:active, :keyword_list_id] }
end
只是,这行不通。它检查数据库中不存在的活动列并引发此错误:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR: column keywords.active does not exist
那么,我的问题是有什么办法可以使这项工作,还是我必须编写一个自定义验证器?如果是这样,是否有关于过度访问数据库应该是什么样子的任何提示?