Ante todo gracias por la respuesta, Xavier.
Pues sà que me ha funcionado. Me habÃa creado una secuencia llamada
“rails_sequence” por algo que leà por ahÃ, y he aprovechado que ya la
tenÃa
hecha, por lo que he puesto :
class MenusUsuario < ActiveRecord::Base
belongs_to :menu
belongs_to :usuario
set_sequence_name “rails_sequence”
end
Según lo que me dices, tendrÃa que crear una secuencia para cada modelo
y
poner el set_sequence_name “secuenica”. Me parece muy poco DRY.
Por puro capricho y saltándome la máxima de la programación (si
funciona, no
lo toques!!) ¿No habrÃa otra forma de hacerlo?
Gracias de nuevo
On 5/16/07, Xavier N. [email protected] wrote:
On May 16, 2007, at 1:15 PM, Luis V. wrote:
> Buenas. He tenido que cambiar de BBDD, de mysql a oracle.
>
> Tengo el siguiente método:
>
> def gestion_menu
> begin
> MenusUsuario.transaction do
>
MenusUsuario.delete_all([‘usuario_id=?’,current_usuario.id])
> for m in params[:menu_usuario]
> if m[1].to_s==“1”
> a = MenusUsuario.new(:usuario_id =>
> current_usuario.id,:menu_id => m[0] )
> a.save!
> end
> end
> end
> flash[‘notice’]=“Se han guardado los cambios”
> rescue
> miLog(“Excepción en gestion_menu”,$!)
> flash[‘notice’]=$!
> end
> redirect_to :action => “irmenu”, :accion => “gestion_menu”
> end
>
> En mysql me funciona perfectamente, y si hay un fallo pues hace
> rollback.
>
> Ahora con Oracle, cuando lo hago, me sale:
>
> ORA-02289: no existe la secuencia
>
> ¿Qué problema puede haber? ¿Es algo de permisos del usuario de la
> BBDD? Es que necesito un acceso muy restringido para este usuario.
> Si es eso, ¿qué permisos deberÃa tener este usuario?
Nunca he usado Oracle con AR, pero en Oracle la generacion
automatica
de IDs corre a cargo de secuencias asociadas a las tablas, estas
secuencias han de crearse en la base de datos. Si la tabla se llama
“users” el adaptador de AR por defecto asume que la secuencia se
llama “users_seq”. Segun leo en el codigo el adaptador define
ActiveRecord::Base.set_sequence_name
para el caso de que la secuencia no se llame de ese modo, que podria
ser que sea lo que sucede. Entiendo que se usaria asi
class User < ActiveRecord::Base
set_sequence_name "nombre_de_la_secuencia_legacy"
...
end
Sirve?
-- fxn
_______________________________________________
Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es