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

  • Ch... Stefano
    • ... Sergio Cambra .:: entreCables - Symbol Servicios Informáticos S.L. ::.

Reply via email to