私はbelongs_toメソッドのオプションをチェックし、Rails3.2.7で次の動作をテストしています。
上記のリンクのように、:dependent
オプションは次のように述べています
:destroyに設定すると、このオブジェクトが破棄されるときに、関連付けられたオブジェクトが破棄されます。:deleteに設定すると、関連付けられたオブジェクトは、destroyメソッドを呼び出さずに削除されます。
私が理解しているように、次の場合に投稿が削除された場合は、作成者を削除する必要があります。
class Post < ActiveRecord::Base
belongs_to :author, :dependent => :delete
end
class Author < ActiveRecord::Base
attr_accessible :name
has_one :post
before_destroy :log_author_removal
private
def log_author_removal
logger.error('Author is getting removed')
end
end
コンソールの場合:
> Post.first
Post Load (0.4ms) SELECT "posts".* FROM "posts" LIMIT 1
=> #<Post id: 5, title: "Post 5", author_id: 3>
> p.delete
SQL (197.7ms) DELETE FROM "posts" WHERE "posts"."id" = 5
=> #<Post id: 5, title: "Post 5", author_id: 3>
> Author.find(3)
Author Load (0.5ms) SELECT "authors".* FROM "authors" WHERE "authors"."id" = ? LIMIT 1 [["id", 3]]
=> #<Author id: 3, name: "Author 3">
ただし、呼び出すと、p.destroy
関連付けられた作成者が削除されます。
私は引用された声明の上で誤解されていますか?