Why the record is updated?

Hi, all! I have the following problem: Suppose I have a post that has and belongs to many tags. If I do e.g.

my_post.title = "New title"

I still need to do

my_post.save

to write changes to the database But if I do

my_post.tags = [some_tag, some_other_tag]

the changes seem to be written down right there. Isn't it a bug? This kind of behaviour is undesired for me because I wish to check before_update which tags were added and removed to perform some manipulations with them. And if I do

my_post.update_attributes(:tags => new_list_of_tags)

in before_update changes are actually already been saved so I can't get the old tags at all.

Any help will be appreciated.

Yours sincerely, Damian/Three-eyed Fish