Inserciones y actualizaciones en relaciones 1-n

Tengo una tabla de mensajes a los que puedo asignar tags. Cada tag
lo recibo desde un textbox de un formulario. Puede haber n tags para
un mensaje.

message => has_many :tags
tag => belongs_to :message

El caso es que la insercion de nuevos registros lo hago
así:
@message = Message.new(params[:message])
params[:tags].each do |tag, value|
@message.tags << Tag.new(:tag => value)
end
@message.save

Hasta aquí todo correcto. La insercion se lleva a cabo sin
ningún problema. Pero… ¿para actualizar? Ahora mismo lo que hago es esto

@message = Message.find(params[:id])
@tags = Tag.find(:all, :conditions => ["message_id = ?", params[:id]])
   	@tags.each do |tag|
     	Tag.delete(tag.id)
   	end
   	params[:tags].each do |tag, value|
     	@message.options << Tag.new(:tag => value)
   	end
@messagel.update_attributes(params[:message])

Como veis, elimino todos los tags de ese mensaje y despues vuelvo a
introducirlos (como en la insercion). Esto funciona, pero supongo que
Rails provee algún mecanismo mas ágil y menos rebuscado. ¿Que me
decís? ¿Como mejorarlo?

Gracias.

Hola Javier,

no sé si lo simplifica mucho, pero por lo menos se puede llamar
@message.tags directamente?

@message = Message.find(params[:id])
@message.tags.each do |tag|
tag.delete
end

estas usando el plugin act_as_taggable? nunca lo usé, pero he visto
comentários buenos y quizá tenga algunos helpers que simplifiquen las
cosas.

saludos
Oliver

2006/11/25, Javier M. [email protected]: