删除父项时删除子项无效

时间:2010-09-30 04:27:23

标签: ruby-on-rails ruby-on-rails-3

情况比这更复杂!

我有一个问题模型

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 =&gt;我的关系中的“event_id”。

谁能告诉我这是什么问题?

谢谢

1 个答案:

答案 0 :(得分:1)

Answer模型中不存在外键,而是RepEvent模型有一个名为'event_id'的外键,其作用类似于answer_id,并链接到Answer模型。如果这种情况正确,则必须在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

试试这必须有效。