无法销毁父对象

时间:2012-10-12 22:14:16

标签: ruby datamapper ruby-datamapper

我有一个庞大而复杂的用户模型,看起来像这样:

class User

  class Link
    include DataMapper::Resource
    property :id, Serial, :key => false

    belongs_to :follower, :model => 'User', :key => true
    belongs_to :followed, :model => 'User', :key => true
  end

  include DataMapper::Resource

  property :id, Serial
  property :username, String, :required => true

  has n, :links_to_followers, :model => 'User::Link', :child_key => [:followed_id]
  has n, :links_to_followed, :model => 'User::Link', :child_key => [:follower_id]
  has n, :comments
  has 1, :profile_image
end

我的问题是Datamapper不允许我销毁它。我认为这是Datamapper不希望用未销毁的子对象销毁对象的结果所以我在destroy_to_followers,links_to_followed,底层注释和配置文件图像上调用了destroy的方法destroy_deep(这些都被正确销毁)

但是,即使我之后调用user.destroy,也不会销毁用户。没有任何错误消息。是否有某种我失踪的级联删除命令?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。

显然要调试destroy,object.errors没用。而是跟踪以下异常:

begin
  u.destroy
rescue Exception => e
  p e
end

解决方案是其中一个子字段没有映射回用户。我有一个属于User的类,但是User没有n喜欢。

相关问题