Sri, I've try the solution 1. without result.
The solution 2. work but I've substitute authorized_for_delete? with
authorized_for_destroy?.
If ther's no way to display an error message on the view I will use
authorized_for_destroy?
Thank you very much for your help
On 7 Nov, 19:16, Sri Sri <[EMAIL PROTECTED]> wrote:
> 1. ActiveScaffold is sitting on the top of rails so you can use most of
> the rails features, if not all.
>
> If you put the following in a model, user cannot delete it when it meets
> the condition (I think the delete link will be automatically disabled in
> the ActiveScaffold front end). It's prevention than cure.
>
> def authorized_for_delete?
> return false if(do_not_delete_condition)
> return true
> end
>
> 2. 'before_destroy' call back will display the foolwoing error message
> when the condition meets and will not destroy.:
>
> class Subscription < ActiveRecord::Base
> before_destroy :check_destroy
>
> private
> def check_destroy
> errors.add_to_base("Sorry! No! Non! Nein! Nr! ????.!")
> if(do_not_delete_condition)
> end
> end
>
> Hope it helps.
>
> Stefano wrote:
> > Sri thank you for reply me but I don't understand:
> > 1. authorized_for_delete? is a rails method? How can I use it?
> > 2. the problem is not before_destroy; the validation is ok and in fact
> > the record is not deleted, I need a way to return to the view a
> > message like "flash[:notice] = "can't delete"".
>
> > thank you for your help
>
> > On 7 Nov, 18:36, Sri Sri <[EMAIL PROTECTED]> wrote:
>
> >> I think there are two ways to do it. Anyone please correct me if I am
> >> wrong:
>
> >> 1. Try the authorized_for_delete? method in the model. That should
> >> control the delete operations. I find it very useful.
>
> >> 2. Please look into Canceling callbacks. 'before_destroy' might be
> >> useful to you.
> >> http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html#M001622
>
> >> -Sri
>
> >> Stefano wrote:
>
> >>> Ok rais goes to the log file.
> >>> So how to go with a error message in the active scaffold view?
>
> >>> Thank you
>
> >>> On 7 Nov, 17:22, Sri Sri <[EMAIL PROTECTED]> wrote:
>
> >>>> raise will raise an exception which goes to the log file.
>
> >>>> Stefano wrote:
>
> >>>>> Sorry, I've read so fast your reply so I've mistake the code.
> >>>>> Now I've try with this code (like you've write)
>
> >>>>> before_destroy :deletable
> >>>>> def deletable
> >>>>> products.blank?
> >>>>> end
>
> >>>>> and the validation is ok, but now no message appears (neither "Request
> >>>>> Failed (code 500, Internal Error)").
> >>>>> I would to show the user that the delete operation is not permetted.
> >>>>> How to do this in the Active Scaffold view?
>
> >>>>> Thank you
>
> >>>>> On 7 Nov, 17:12, Stefano <[EMAIL PROTECTED]> wrote:
>
> >>>>>> Thank you for your reply.
> >>>>>> I've try to use this code:
>
> >>>>>> before_destroy :deletable
>
> >>>>>> def deletable
> >>>>>> unless products.blank?
> >>>>>> raise "You can't destroy this invoice!"
> >>>>>> end
> >>>>>> end
>
> >>>>>> but the message in the view is always "Request Failed (code 500,
> >>>>>> Internal Error)".
>
> >>>>>> What can I do?
>
> >>>>>> Thank you for your help
>
> >>>>>> On 7 Nov, 11:48, "Sergio Cambra .:: entreCables - Symbol Servicios
> >>>>>> Informáticos S.L. ::." <[EMAIL PROTECTED]> wrote:
>
> >>>>>>> El Thursday 06 November 2008 16:46:23 Stefano escribió:
>
> >>>>>>>> Hi, I've a model called "Invoice" that :has_many products.
> >>>>>>>> I've validate the destroy of one Invoice that control if the
> >>>>>>>> invoice.products is empty (one invoice can't be deleted if contains
> >>>>>>>> products).
> >>>>>>>> Here the code:
> >>>>>>>> -----------------------------------
> >>>>>>>> before_destroy :deletable
>
> >>>>>>>> def deletable
> >>>>>>>> unless products == []
> >>>>>>>> raise "You can't destroy this invoice!"
> >>>>>>>> end
> >>>>>>>> end
> >>>>>>>> -------------------------------------
>
> >>>>>>>> The validation is ok so in the view (managed by ActiveScaffold) if I
> >>>>>>>> try to delete one invoice with some products associated, I receive
> >>>>>>>> the
> >>>>>>>> message "Request Failed (code 500, Internal Error)" and not "You
> >>>>>>>> can't
> >>>>>>>> destroy this invoice!".
> >>>>>>>> How can I change the message?
> >>>>>>>> Thank you
>
> >>>>>>> ActionController callbacks must raise an exception or render or
> >>>>>>> redirect to
> >>>>>>> cancel the action, but ActiveRecord callbacks cancel actions
> >>>>>>> returning false,
> >>>>>>> so you should use:
>
> >>>>>>> def deletable
> >>>>>>> products.blank?
> >>>>>>> end
> >>>>>>> --
> >>>>>>> Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.
> >>>>>>> Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza
> >>>>>>> T) 902 021 404 F) 976 52 98 07 E) [EMAIL PROTECTED]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---