当父母被删除时删除孩子不起作用
那么情况有点复杂!当父母被删除时删除孩子不起作用
我有一个问题模型
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
和Finaly一个rep_event模型
class RepEvent < ActiveRecord::Base
belongs_to :answer
end
我代表事件可是没有任何主键。 它只有事项标识,其作用类似于answer_id
当我摧毁一个问题,我想删除有关它(问题,答案和Rep_Events)这就是为什么我使用:dependent => :destroy
我试图进入控制台一切并对其进行测试,但它给了我一些错误
NoMethodError: undefined method `eq' for nil:NilClass
此错误是非常普遍的,但我认为,问题是,我rep_event类没有任何“answer_id”领域,但只有事项标识。那就是为什么我在我的关系中使用foreign_key =>“event_id”。
谁能告诉我问题是什么?
谢谢
的外键是不存在的应答模式,而不是RepEvent模型有一个名为“事项标识”的外键,其作用类似于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
试试这个这个必须工作。
几乎在那里!这给我一个错误,找不到answer_id。 我不能重命名我的表作为它的答案,但其他事件。我将不得不找出如何使它搜索rep_events.event_id而不是rep_events.answer_id。 这是错误: ActiveRecord :: StatementInvalid:PGError:错误:列rep_events.answer_id不存在 – Sharethefun 2010-10-01 00:15:36
你能显示什么确切地说你的迁移rep_events包括我认为你的表中有一个从rep_events缺少的参考来回答 – Rohit 2010-10-01 05:15:03
对不起,它有点凌乱作为评论: create_table:rep_events,:id => false do | t | t.integer“event_id”,:null => false t.string“event_type”,:limit => 12,:null => false t.integer“user_id”,:null => false t.integer“ author_id“,:null => false t.datetime”created_at“,:null => false – Sharethefun 2010-10-02 03:02:56
Rails喜欢使用它的模型来创建主键。如果你违反惯例,你可能需要明确设置一个。如果将'set_primary_key:event_id'添加到RepEvent类,它会起作用吗? – Raphomet 2010-09-30 04:38:20
event_id不是主键。它只是一个外键。我的模型没有任何主键。 – Sharethefun 2010-10-01 00:15:08