F.collection_select

Hola a todos, soy nuevo en el tema de rails, pero tengo una duda, tengo
una relacion muchos a muchos de productos con categorias y estoy usando
un f.collection_select tengo el siguiente codigo para ingresar un nuevo
producto y seleccionar una categoria

<% categorias = Categoria.find(:all, :order => :id) %>

<%= f.label :categoria %> <%= f.collection_select :id, categorias, :id, :descripcion, {:prompt => "Por favor elegir"} %>

luego quiero almacenar la informacion en la tabla de relaciones con el
siguiente codigo

class Producto < ActiveRecord::Base
has_many :categorizacions
has_many :categorias, :through => :categorizacions
after_save :guardar_cat
protected
def guardar_cat
#agrego un rol por defecto
categorizacion = Categorizacion.new
categorizacion.producto_id= :producto
categorizacion.categoria_id= :id
categorizacion.save
categorizacions<<categorizacion
end

end

pero en la tabla categorizacions no me guarda el id de categoria, el
cual supuestamente selecciono en el collection_select, imagino que tengo
varios errores, si alguien tiene una idea de como puedo hacer esto se lo
agradecere mucho.