удалить дочерний элемент, когда родитель удален, не работает - PullRequest
0 голосов
/ 30 сентября 2010

Ну, ситуация немного сложнее, чем это!

У меня есть вопрос модель

class Question < ActiveRecord::Base
  has_many :answers, :dependent => :destroy

тогда ответ Модель

class Answer < ActiveRecord::Base
  belongs_to :question, :counter_cache => true
  has_many :rep_events, :class_name => "RepEvent", :foreign_key => "event_id", :dependent => :destroy

и, наконец, модель rep_event

class RepEvent < ActiveRecord::Base
  belongs_to :answer   
end

У моего события rep нет первичного ключа. он имеет только event_id, который действует как answer_id

Когда я уничтожаю Вопрос, я хочу удалить все, что с ним связано (Вопрос, Ответы и Rep_Events). Вот почему я использую :dependent => :destroy Я попытался войти в консоль и протестировать ее, но она выдает ошибку

NoMethodError: undefined method `eq' for nil:NilClass

Эта ошибка очень общая, но я считаю, что проблема в том, что мой класс rep_event не имеет никакого поля "answer_id", а только event_id. вот почему я использовал foreign_key => "event_id" в моих отношениях.

Может кто-нибудь сказать мне, в чем проблема?

Спасибо

1 Ответ

1 голос
/ 30 сентября 2010

Внешний ключ отсутствует в модели ответа, вместо этого модель RepEvent имеет внешний ключ с именем 'event_id', который действует как answer_id, и ссылается на модель ответа.Если этот сценарий верен, вам придется внести следующие изменения в модель RepEvent

class RepEvent < ActiveRecord::Base
  belongs_to :answer, :foreign_key => event_id
end

и в модель ответа

class Answer < ActiveRecord::Base
  belongs_to :question, :counter_cache => true
  has_many :rep_events, :class_name => "RepEvent", :dependent => :destroy
end

Попробуйте, это должно работать.

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