У меня есть ассоциация: own_to, определенная в модели Brand следующим образом:
belongs_to :loyalty_coupon, :class_name => Coupon, :foreign_key => :loyalty_coupon_id
(Существует также отношение: has_many от бренда к купону, но отношение: own_to предназначено для выделения одного конкретногокупон для особого внимания. Имена отношений и поля связи различны между двумя ассоциациями, поэтому не должно быть никакого конфликта; я упоминаю только об этом, поскольку это может оказаться уместным. Отношения выражаются как has_many :coupons
и belongs_to :brand
.)
Когда я отображаю Brand.first.loyalty_coupon
, я получаю «ноль» (это нормально, потому что я еще не назначил).Когда я пытаюсь назначить loyalty_coupon с помощью команды Brand.first.loyalty_coupon = Coupon.first
, я получаю сообщение об ошибке:
undefined method `match' for #<Class:0x104036d30>
с частичным отслеживанием следующим образом:
activerecord (3.0.1) lib/active_record/base.rb:1016:in `method_missing'
activerecord (3.0.1) lib/active_record/base.rb:1180:in `compute_type'
activerecord (3.0.1) lib/active_record/reflection.rb:162:in `send'
activerecord (3.0.1) lib/active_record/reflection.rb:162:in `klass'
activerecord (3.0.1) lib/active_record/reflection.rb:173:in `build_association'
То же сообщение об ошибке, если ясделать Brand.first.build_loyalty_coupon
(не удивительно, потому что он делает то же самое).У меня не было: has_one в модели Coupon, но я также пробовал это с указанными: class_name и: foreign_key, и получал ту же ошибку и трассировку при попытке Coupon.first.brand_loyalty
.Я представляю, что мне не хватает чего-то глупого, но я не вижу, что это такое.