2

私は 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

それで、私の質問はこれを機能させる方法はありますか、それともカスタムバリデーターを書く必要がありますか? もしそうなら、データベースへのアクセスが多すぎる場合のヒントはありますか?

4

1 に答える 1