Buenas,
Estoy frenado con un problema de Callbacks. Necesito ayuda!!!
Estoy usando login_engine para la autenticacion en mi aplicacion RoR.
Necesito crear un nuevo Deposito para un nuevo usuario al hacer sign_up.
Ya
probe de mil maneras y no puedo lograr que if @deposito.save devuelva
true (es
decir, que guarde un nuevo Deposito) dentro del callback after_create.
En el
Deposito, necesito el id del User (responsable_id).
Tambien probe con Transactions, pero tampoco pude hacerlo funcionar.
Para
colmo no tira ningun error, simplemente devuelve false.
Aca van los modelos
class Deposito < ActiveRecord::Base
belongs_to :user, :foreign_key => ‘responsable_id’
end
class User < ActiveRecord::Base
has_many :depositos
def after_create
# Creo un Deposito para el Usuario Registrado
@deposito = Deposito.new
@deposito.nombre = self.apellidos + ", " + self.nombres + "
(Deposito
Personal)"
@deposito.responsable_id = self.id
if @deposito.save
...
else
...
end
end
…
end
Alguien ha tenido que lidiar con una situacion similar?
Desde ya, muchas gracias!
Fabian
On Nov 5, 2006, at 10:48 PM, Fabian Porta wrote:
class User < ActiveRecord::Base
if @deposito.save
Se ve algo si cambias @deposito.save por @deposito.save! ?
– fxn
Xavier,
Ahora con @deposito.save! pude ver cual era el error! Lo solucione y
funciono de lujo!
Segun la API de Rails, el metodo save! hace lo siguiente: “Attempts to
save
the record, but instead of just returning false if it couldn’t happen,
it
raises a RecordNotSaved exception”
Alguien tiene algun ejemplo de como manejar ese exception
(RecordNotSaved)
en un Callback?
Muchas gracias!
Fabian
On Nov 6, 2006, at 2:32 AM, Fabian Porta wrote:
Xavier,
Ahora con @deposito.save! pude ver cual era el error! Lo solucione
y funciono de lujo!
Magnifico, que ocurria? Fallaba alguna validacion?
– fxn
No sería algo
así?
begin
algo.save!
rescue RecordNotSaved
hago algo…
end
PD: recomendación: usar el método de clase en vez de sobreescribir la
instancia:
class Algo < …
after_create :crear_otro_lindo_registro
protected
def crear_otro_lindo_registro
otro = Otro.new
otro.algo_id = id
end
end
PD2: necesitás que deposito sea una variable de instancia? (léase
@deposito en vez de deposito?) a mí me pasaba lo mismo, la costumbre
de ver el código del scaffold… automáticamente le ponía (y le sigo
poniendo) la @ a todas las variables locales que necesito
PD3: algo más lindo: otro.algo = self (sin _id)
Gracias a todos por los consejos y aportes!
Fallaba una validacion de campo requerido, pero yo nunca me enteraba :X
Saludos,
Fabian
PD: por casualidad alguien me puede pasar codigo CSS para que un link
armado
con una imagen no le haga recuadro ni subrayado, es decir que solo sea
un
link.
estoy usando
<%= link_to(image_tag(“add.png” :alt=> “Agregar”), :action => “agregar”,
:id
=> “item”) %>
a img { border-width: 0; }
No exactamente, porque utilizando la declaración abreviada (“border”)
es obligatorio especificar todos los atributos implicados. La forma
correcta sería:
border: 0px none #ffffff;
o bien
border-width: 0;