Yuck

What's wrong with

def valid_or_nil?(obj)
obj.nil? or obj.valid?
end

Blog: http://random8.zenunit.com/
Learn rails: http://sensei.zenunit.com/

On 08/04/2009, at 9:14 PM, sshefer <[email protected]> wrote:

>
> Just wanted to say that someone helped me with the solution here:
> http://railsforum.com/viewtopic.php?id=29103
>
> Apparently, it's as simple as:
>
> def valid_or_nil?( model )
>  model.nil? ? true : model.valid?
> end
>
> if @person.valid? & valid_or_nil?(@cat) & valid_or_nil?(@dog)
>  Person.transaction do
>    @person.save!
>    @cat.save! unless @cat.nil?
>    @dog.save! unless @dog.nil?
>  end
> else
>  FAIL
> end
>
> On Apr 8, 1:17 am, sshefer <[email protected]> wrote:
>> Sure.
>>
>> My scenario is a bit different.
>>
>> I have an application form that needs to be filled in by a user.  If
>> the user is not registered on my site I have a few fields that allow
>> the user to quickly enter name and email and their account will be
>> created when the application is submitted.  At the same time, the
>> application allows a user to pick from a list of documents they've
>> uploaded.  However, I also have fields incase a user would like to
>> upload a document that is not on the list (to save them the hassle of
>> going back, uploading and returning to the application).
>>
>> Therefore, my application will always have a new @application and
>> sometimes a new @user or @document.  The document model is
>> polymorphic.  The application belongs_to the user and has a field for
>> document_id but I did not create an explicit relationship in the
>> model.
>>
>> Thanks for any help.
>>
>> On Apr 8, 1:03 am, Ram <[email protected]> wrote:
>>
>>> Hmmm.. Are Cat and Dog associated to the Person model?
>>
>>>> there may not always be a @cat or @dog
>>
>>> Meaning the parameters for these models will be passed in from the
>>> form but they will be empty? In which case you can have a
>>> before_validation callback and check if all the params for these
>>> models are blank. If they are, then return false. This will still
>>> throw a "Cat/Dog is invalid" validation error. That can be handled  
>>> by
>>> hacking into error_messages_for. Its all quite ugly but it works.
>>> I can tell you more if you can explain the context better.
>>
>>> On Apr 7, 2:26 pm, sshefer <[email protected]> wrote:
>>
>>>> Jim Neath's walkthru (http://jimneath.org/2008/09/06/multi-model-forms-
>>>> validations-in-ruby-on-rails/) talks about validating multiple  
>>>> objects
>>>> before saving.  His example is below:
>>
>>>> if @person.valid? & @cat.valid? & @dog.valid?
>>>>   Person.transaction do
>>>>     @person.save!
>>>>     @cat.save!
>>>>     @dog.save!
>>>>   end
>>>> else
>>>>   FAIL
>>>> end
>>
>>>> I am trying to do something similar but in my situation there may  
>>>> not
>>>> always be a @cat or @dog (there will always be a @person though).
>>>> Does anyone know of a way that I can run the same validation but  
>>>> allow
>>>> for the conditional presence of the 2 objects?
>>
>>>> Thanks.
>>
>>
> >

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" 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/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to