Выяснил, в чем проблема:
class Qa::ErrorType < Qa::Base
set_table_name "error_types"<br>
# Associations
has_many :errors, :class_name => 'Qa::Error'
has_many :evaluations, :class_name => 'Qa::Evaluation', :through => :errors<br>
# Validations
validates_presence_of :content
validates_uniqueness_of :content
end
Это объявление переопределяет ассоциацию / объект ошибок, предоставляемый ActiveRecord, поэтому мы теряем все функции проверки, предоставляемые ActiveRecord :: Validations.Переименование ассоциации в более конкретную вещь решает проблему.
Правильная реализация класса:
class Qa::ErrorType < Qa::Base
set_table_name "error_types"<br>
# Associations
has_many :transaction_errors, :class_name => 'Qa::TransactionError'
has_many :evaluations, :class_name => 'Qa::Evaluation', :through => :transaction_errors<br>
# Validations
validates_presence_of :content
validates_uniqueness_of :content
end
Все проверки будут работать так, как они предназначены после этогоменять.Я думаю, что переименование класса Qa :: Error в Qa :: TransactionError не является обязательным.Я просто сделал это, чтобы мое соглашение об именах было единым для всего приложения.