Forum: Rails-ES Llamar a un controlador desde otro controlador

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Carlos Matallín (Guest)
on 2009-04-13 16:12
(Received via mailing list)
Antes que nada quería mandar un saludo a todo el mundo y agradecer de
antemano la ayuda que se aporta mediante estas listas u otros
recursos; puesto que soy nuevo en esto.

Estoy empezando a programar una aplicación en rails después de haber
probado el framework de ruby hace un tiempo desde el lado del
diseñador en un proyecto (es decir, tocando únicamente las vistas) y
habiendo programado previamente solo un poco en C; sin embargo me
gusto bastante la manera de trabajar, el flujo y la filosofía. Como
digo estos días me he ido documentando y empezando a desarrollar mi
pequeño proyecto poco a poco mientras voy aprendiendo.

Voy ahora con el problema que me ha surgido: La aplicación debe crear
una "tarjeta" con información del usuario cuando este se registra de
modo que en el controlador que maneja la creación de usuarios se
encarga de ello. De todas formas tengo un controlador propio para la
tarjeta que he creado mediante el script generador scaffolding. ¿Hay
algun modo de llamar desde el controlador de usuario al controlador de
la tarjeta y colocar alli la creación de esta? El trozo de código que
se encarga de esto podréis verlo mejor en http://tinyurl.com/cr53uo

Si no fuera por la necesidad del sistema de autentificación que he
instalado mediante el plugin "restful authentication" la solución
lógica creo que sería unificar ambos controladores y mantener la
simplicidad de la aplicación. Exactamente mi duda es si pudiera llamar
al controlador de la tarjeta desde el del usuario o si, aunque la
solución no es la más elegante dejarlo tal cual está puesto que
funciona. Querría saber vuestras opiniones.

Muchas gracias.

--
Carlos Matallín
removed_email_address@domain.invalid
http://c.matallin.com
+34 607377647
Andrés G. (Guest)
on 2009-04-14 02:10
(Received via mailing list)
Se me ocurren dos soluciones:
1-  colocar la lógica que quieres utilizar en ambos controllers en
Application_controller.rb
2- colocar ese código en un archivo en
------ TuApp/lib/tucodigo.rb -------

Creo que esto lo he visto recomendar antes en la lista, pero ya llegarán
más
comentarios al hilo :-)

El 13 de abril de 2009 14:10, Carlos Matallín 
<removed_email_address@domain.invalid>
escribió:
Carlos Matallín (Guest)
on 2009-04-14 02:56
(Received via mailing list)
La solución de colocar el código en Application_controller.rb la había
barajado pero sigue pareciéndome igual de sucia (o más) que dejar la
creación de las tarjetas en el controlador de usuarios.

De todos modos agradezco un montón las diferentes soluciones que se
puedan aportar y vuestra opinión ya que como digo acabo de empezar en
esto :)

2009/4/14 Andrés gutiérrez <removed_email_address@domain.invalid>:
>>
>> pequeño proyecto poco a poco mientras voy aprendiendo.
>> Si no fuera por la necesidad del sistema de autentificación que he
>> Carlos Matallín
> Ror-es mailing list
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>



--
Carlos Matallín
removed_email_address@domain.invalid
http://c.matallin.com
+34 607377647
Francesc E. (Guest)
on 2009-04-14 03:36
(Received via mailing list)
Al final como lo has resuelto?
Carlos Matallín (Guest)
on 2009-04-14 03:47
(Received via mailing list)
A falta de encontrar una mejor solución que me convenza voy a dejarlo
como está ya que funciona; aunque no sea su sitio.

2009/4/14 Francesc E. <removed_email_address@domain.invalid>:
>> De todos modos agradezco un montón las diferentes soluciones que se
>>> Creo que esto lo he visto recomendar antes en la lista, pero ya
>>>>
>>>> Voy ahora con el problema que me ha surgido: La aplicación debe
>>>> o que
>>>>
>>>> http://lists.simplelogica.net/mailman/listinfo/ror-es
>>
> Ror-es mailing list
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>



--
Carlos Matallín
removed_email_address@domain.invalid
http://c.matallin.com
+34 607377647
Juan José Vidal (Guest)
on 2009-04-14 04:17
(Received via mailing list)
Muy buenas,

Pienso que lo más lógico es llevar ese código al modelo, es decir, una
vez que el usuario se registre, hacer que automáticamente se cree la
tarjeta.

Class User < AR

  after_create :crea_tarjeta

  private
  def crea_tarjeta
    Lo que sea..
  end

end



Carlos Matallín escribió:
Carlos Matallín (Guest)
on 2009-04-14 07:13
(Received via mailing list)
Hola Juan,

Exactamente era lo que iba buscando; muchísimas gracias por tu
inspiración que junto al siguiente enlace me han ayudado a alcanzar el
propósito que iba persiguiendo, hacerlo a la "rails way" jejeje
http://www.therailsway.com/2006/12/8/idiomatic-ruby

Al final el código ha quedado de la siguiente manera: del
UsersController borramos cualquier referencia a la creación de
tarjetas y como dices llevamos el código al modelo de usuarios

Class User < AR
  after_create :create_card

  protected
    def create_card
      Card.create :user_id => id, :title => "Visit card of
#{self.login}"
    end
end

Gracias de nuevo y un gran saludo

2009/4/14 Juan José Vidal <removed_email_address@domain.invalid>:
>  private
>> como está ya que funciona; aunque no sea su sitio.
>>>> barajado pero sigue pareciéndome igual de sucia (o más) que dejar la
>>>>> Application_controller.rb
>>>>>> Antes que nada quería mandar un saludo a todo el mundo y agradec
>>>>>> gusto bastante la manera de trabajar, el flujo y la filosofía. Como
>>>>>> ¿Hay
>>>>>> llamar
>>>>>> +34 607377647
>>>>>
>>>> http://lists.simplelogica.net/mailman/listinfo/ror-es
>>
>
> _______________________________________________
> Ror-es mailing list
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>



--
Carlos Matallín
removed_email_address@domain.invalid
http://c.matallin.com
+34 607377647
Francesc E. (Guest)
on 2009-04-14 09:42
(Received via mailing list)
On Apr 14, 2009, at 5:11 AM, Carlos Matallín wrote:

> Al final el código ha quedado de la siguiente manera: del
> UsersController borramos cualquier referencia a la creación de
> tarjetas y como dices llevamos el código al modelo de usuarios

Ese "create_card" lo puedes meter tambien dentro de un observer.
Carlos Matallín (Guest)
on 2009-04-15 04:06
(Received via mailing list)
Muy cierto, de ese modo saco del modelo de usuario acciones que no
tienen que ver directamente con él, sino con las tarjetas.

He escrito un artículo acerca del proceso de resolución de la duda,
para que aquellos que se estén iniciando, como yo puedan echarle un
vistazo. http://c.matallin.com/2009/04/the-rails-way/

Muchas gracias y un saludo.

2009/4/14 Francesc E. <removed_email_address@domain.invalid>:
> removed_email_address@domain.invalid
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>



--
Carlos Matallín
removed_email_address@domain.invalid
http://c.matallin.com
+34 607377647
This topic is locked and can not be replied to.