Наследование одной таблицы с объединением таблиц has_one возвращает ошибку method_missing - PullRequest
1 голос
/ 14 марта 2011

У меня проблема с корректной работой моей модели данных.

У меня есть следующие модели и подмодели.

class Horse < ActiveRecord::Base
has_one :connection
has_one :trainer, :through => :connection
has_one :owner, :through => :connection
end

class User < ActiverRecord::Base    #Single table inheritance
has_many :connections
has_many :horses, :through => :connections
end

class Owner < User
#owner specific code
end

class Trainer < User
#trainer specific code
end

class Connection < ActiveRecord::Base #join table
belongs_to :horse
belongs_to :owner
belongs_to :trainer
end

Я успешно создал лошадей, владельцев, дрессировщиков и связи со всеми заполненными типами полями. Когда я набираю Horse.all в консоли, он возвращает всех лошадей, как и ожидалось. То же самое верно для User.all Connections.all Trainer.all и Owner.all.

Теперь, однако, я пытаюсь сделать что-то вроде. Horse.trainer и Horse.owner, чтобы вернуть тренера и владельца для лошади. Когда я пытаюсь это сделать, я получаю ошибку method_missing. Я думал, что ассоциации, которые я создал, позволят этому работать. Я уже давно бьюсь головой о стену, поэтому, если кто-нибудь сможет предложить какое-либо понимание или совет, я буду признателен.

1 Ответ

2 голосов
/ 14 марта 2011

Попробуйте сделать это:

class Trainer < User
  has_many :connections
  has_many :horses, :through => :connections
end

Сделайте то же самое для владельца.Это должно соединить ассоциации раз и навсегда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...