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.