Veréis, cada vez que un usuario se registra en mi aplicación deseo crear
(de forma aleatoria) un club y múltiples jugadores para dicho club),
tenÃa pensado hacer esto:
(En mi controlador Users)
def create
@user = User.new(params[:user])
respond_to do |format|
if @user.save
Club.create_club(user) #aquà está mi duda
flash[:notice] = "Account #{@user.login} registered!"
format.html { redirect_back_or_default home_path}
format.xml { render :xml => @user, :status => :created,
:location => @user }
else
format.html { render :action => “new” }
format.xml { render :xml => @user.errors, :status =>
:unprocessable_entity }
end
end
end
¿Es correcto crear el equipo para ese usuario de esa forma?
Carlos Belizón wrote:
¿Es correcto crear el equipo para ese usuario de esa forma?
Corrijo mi idea:
def create
@user = User.new(params[:user])
@user.club = Club.create_random #duda
respond_to do |format|
if @user.save
flash[:notice] = "Account #{@user.login} registered!,
Club: #{@user.club.name}"
format.html { redirect_back_or_default home_path}
format.xml { render :xml => @user, :status => :created,
:location => @user }
else
format.html { render :action => “new” }
format.xml { render :xml => @user.errors, :status =>
:unprocessable_entity }
end
end
end
Mi duda surge debido a que no sé si es correcto crear un modelo distinto
dentro de la acción del controlador de otro recurso.
Hola a todos,
Prodias hacerlo con un after_create en User
Carlos Belizón escribió:
:unprocessable_entity }
end
end
end
Mi duda surge debido a que no sé si es correcto crear un modelo distinto
dentro de la acción del controlador de otro recurso.
Si es la logica de la aplicacion por que no?
Un saludo.
cartuchoGL wrote:
Hola a todos,
Prodias hacerlo con un after_create en User
Carlos Belizón escribió:
:unprocessable_entity }
end
end
end
Mi duda surge debido a que no sé si es correcto crear un modelo distinto
dentro de la acción del controlador de otro recurso.
Si es la logica de la aplicacion por que no?
Un saludo.
Vale, es que no sabÃa si era más correcto usar un observer, de ahà mi
pregunta :). Aunque bueno, he hecho un cambio de diseño sobre la marcha
y me he dado cuenta que es mejor asignar un club al usuario cuando
acaben todas mis ligas y se hayan hecho las promociones de ascenso y
descenso, por lo que, teniendo en cuenta que la última acción antes de
crear temporadas nuevas es esta:
def promotion
seasons = Season.current_seasons
if Season.finished?(seasons)
begin
seasons = Season.promotion_and_relegate(League.current_seasons,
Season::NUM_PROMOTIONS)
seasons.each {|x| x.save!}
respond_to do |format|
flash[:notice] = “New seasons created”
format.html {redirect_to ‘/admin/leagues’}
format.xml {head :ok}
end
rescue
respond_to do |format|
flash[:error] = “Problems createing the new leagues with
promotions”
format.html {redirect_to ‘/admin/leagues’}
format.xml {head :error}
end
end
else
respond_to do |format|
flash[:error] = ‘You can’t promotion the leagues’
format.html {redirect_to ‘admin/leagues’}
format.xml {head :error}
end
end
end
Cómo puedo hacer que cada vez que se ejecute esa acción se ejecute lo
siguiente:
class League < ActiveRecord::Base
self.create_new_leagues_with_users_without_club
## Código
end
end
2009/5/21 Carlos Belizón [email protected]
Carlos Belizón wrote:
¿Es correcto crear el equipo para ese usuario de esa forma?
def create
@user = User.new(params[:user])
@user.club = Club.create_random #duda
Yo hubiese tirado por un observer.
Todo lo que tenga que ver con relacionar modelos en la creación de una
instancia me gusta más hacerlo asÃ. Y te explico el porqué.
Si algún dÃa, en alguna tarea rake, o en algún entorno raro, no quiero
hacerlo, y quiero crear uno, podrÃa desactivar los observers y no me
volverÃa loco.
Por ejemplo:
User.delete_observers
User.create(:name => ‘pepe’, :club => Club.first)
Suponiendo que para que un usuario sea correcto, debe de pertenecer a
algún
club, añadirÃa la validadción correspondiente.
class User < AR::Base
belongs_to :club
validates_associated :club
validates_presence_of :club
end
class UserObserver < AR::Base
def before_validate(user)
user.club = Club.create_random if user.club.nil?
end
end
Lo de usar un observer en este caso, no tengo claro si serÃa matar
moscas a
cañonazos, asà que tampoco te se decir bien si usar un observer o el
before_validate del propio modelo.
Un Saludo.
–
Guillermo Ãlvarez
Sent from Madrid, Comunidad de Madrid