私は RoR プロジェクトに取り組んでおり、カスタム スコープに対してチェックするモデルの 1 つで一意性を検証したいと考えています。
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
それで、私の質問はこれを機能させる方法はありますか、それともカスタムバリデーターを書く必要がありますか? もしそうなら、データベースへのアクセスが多すぎる場合のヒントはありますか?