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
-~----------~----~----~----~------~----~------~--~---