[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