[Ror-es] Crear registro de otro model con after_create / callbacks

Damian Janowski damian.janowski at gmail.com
Mon Nov 6 03:14:20 GMT 2006


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 :P

PD3: algo más lindo:   otro.algo = self    (sin _id)


On 11/5/06, Fabian Porta <fabianporta at gmail.com> wrote:
> 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 11/5/06, Xavier Noria <fxn at hashref.com> wrote:
> > On Nov 5, 2006, at 10:48 PM, Fabian Porta wrote:
> >
> > > 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
> >
> > Se ve algo si cambias @deposito.save por @deposito.save! ?
> >
> > -- fxn
> >
> >
> >
> > _______________________________________________
> > Ror-es mailing list
> > Ror-es at lists.simplelogica.net
> > http://lists.simplelogica.net/mailman/listinfo/ror-es
> >
>
>
>
> --
> Fabian
> _______________________________________________
> Ror-es mailing list
> Ror-es at lists.simplelogica.net
> http://lists.simplelogica.net/mailman/listinfo/ror-es
>
>
>


-- 
Damian Janowski
damian.janowski at gmail.com


More information about the Ror-es mailing list