情况比这更复杂!
我有一个问题模型
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”。
谁能告诉我这是什么问题?
谢谢
答案 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
试试这必须有效。