[Ror-es] Acceder a multiples bases de datos

congrio atarip1 at yahoo.es
Thu Feb 1 09:23:53 GMT 2007


Vamos a ver, he cambiado un poco la estructura de la aplicación a ver si se puede simplificar.

Tengo el controlador "noticias" con el método "listar_noticias". Cuando lo ejecuto en
http://localhost/noticias/listar_noticias me muestra las noticias de la base de datos "noticias"

Pero también tengo el controlador "admin" con el método "list_admin_news" que quiero que me muestre las noticias de la base de datos "admin". Para esto tengo el siguiente código:

En application.rb:

        before_filter :set_extra_db_connection
        def set_extra_db_connection
                extra_coord = YAML.load(File.open(File.join(RAILS_ROOT,"config/database.yml"),"r"))["admin"]
                Admin.establish_connection(extra_coord)
        end

En admin_controller.rb

    class AdminController < ApplicationController
        def list_admin_news
            require_auth 'users'
            @noticias_admin = Noticia.find(:all)
        end
    end


En  el modelo admin.rb

    class Admin < ActiveRecord::Base
        establish_connection :admin
    end

El problema es que tanto noticias/listar_noticias y admin/list_admin_news se conectan los dos a la misma base de datos sacando asi los mismos datos. ¿Qué puedo hacer?











----- Mensaje original ----
De: congrio <atarip1 at yahoo.es>
Para: La lista sobre Ruby On Rails (rubyonrails.com) en castellano <ror-es at lists.simplelogica.net>
Enviado: lunes, 29 de enero, 2007 10:29:59
Asunto: Re: [Ror-es] Acceder a multiples bases de datos

El problema es que estoy demasiado verde en rails y no se que tendria que hacer exactamente
para poner el codigo en lib o en ApplicationController.

Lo que si tengo en aplication controller (en controllers/application.rb) es el siguiente codigo para conectar
a la base de datos B


        before_filter :set_extra_db_connection

        def set_extra_db_connection
                extra_coord =
 YAML.load(File.open(File.join(RAILS_ROOT,"config/database.yml"),"r"))["controladorb"]
                Controladorb.establish_connection(extra_coord)
        end

y el codigo del modelo de controladorb es:

class Controladorb < ActiveRecord::Base
        establish_connection :controladorb
end


y en el controladora el codigo para intentar llamar a controladorb:
@noticiaexternas = Controladorb.buscar_noticia

que falla con el siguiente error:
undefined method `buscar_noticia'
 for Controladorb:Class

Lo que busco es poder acceder a la vez a dos bases de datos desde un mismo controlador


----- Mensaje original ----
De: Imobach González Sosa <imobachgs at banot.net>
Para: ror-es at lists.simplelogica.net
Enviado: lunes, 29 de enero, 2007 9:58:17
Asunto: Re: [Ror-es] Acceder a multiples bases de datos

El Monday 29 January 2007 08:51:23 congrio escribió:
> Sigo atrancado con esto.
>
> Ahora, en mi aplicación si pongo
> http://localhost/controlador_b/buscar_noticia funciona perfectamente
> Entonces, es cuando quiero que el buscar_noticia sea ejecutado desde
 el
> controlador_a ejecuto http://localhost/controlador_a/listar_noticia  y me
> dice:
>
> undefined method `buscar_noticia' for Controlador_b:Class
>
> el código que falla es:
>
> @noticias = Controlador_b.buscar_noticia

Hombre, para empezar, buscar_noticia es un método de instancia de 
Controlador_b, y no un método de clase (que es como lo estás invocando).

De todos modos, no creo que instanciar Controlador_b y llamar a buscar_noticia 
sea una solución limpia. Si el código de buscar_noticia lo vas a invocar en 
más de un punto, quizás debieras pensar incluirlo en alguna biblioteca (en 
lib/) o incluso en el ApplicationController (prefiero la primera solución, 
pero bueno).

De todos modos, no sé qué quieres hacer exactamente.

Saludos.

-- 
Imobach González
 Sosa
banot.net
Correo-e: imobachgs en banot punto net
_______________________________________________
Ror-es mailing list
Ror-es at lists.simplelogica.net
http://lists.simplelogica.net/mailman/listinfo/ror-es







		
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com_______________________________________________
Ror-es mailing list
Ror-es at lists.simplelogica.net
http://lists.simplelogica.net/mailman/listinfo/ror-es







		
______________________________________________ 
LLama Gratis a cualquier PC del Mundo. 
Llamadas a fijos y móviles desde 1 céntimo por minuto. 
http://es.voice.yahoo.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.simplelogica.net/pipermail/ror-es/attachments/20070201/27112da6/attachment-0001.htm 


More information about the Ror-es mailing list