ho controllando opzioni di belongs_to metodo e sulla verifica seguenti comportamenti in Rails 3.2.7: dipendente =>: eliminare il belongs_to non elimina oggetto proprietario
Come per link qui sopra l'opzione :dependent
afferma che
Se impostato su: destroy, l'oggetto associato viene distrutto quando si trova questo oggetto . Se impostato su: delete, l'oggetto associato viene cancellato senza chiamando il suo metodo destroy.
quanto ho capito l'autore dovrebbe essere rimosso se post viene rimosso in caso seguente:
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
In console:
> 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">
Tuttavia chiamando p.destroy
cancella autore associato.
Sono stato frainteso sopra la dichiarazione citata?
Grazie Jakub. Come al punto 3, l'oggetto autore dovrebbe essere cancellato, ma in realtà non lo è. Ecco perché ho postato qui per ottenere input dalla community –
@AmitPatel Sì ma non hai chiamato 'destroy', hai chiamato' delete'. –
Ciò significa che 'delete' non avrebbe alcun impatto sull'oggetto associato, indipendentemente da cosa è impostato per': dependent'. –