On Fri, Apr 1, 2011 at 10:29 AM, Ramon Leon <[email protected]>wrote:

> On 04/01/2011 08:05 AM, Bryan Crossland wrote:
>
>> Except in this case your "record" is an object instance.
>>
>
> Of course.
>
>
>  Since an object instance is not a pointer to the actual record in the
>> database
>> it should not change when you destroy that record.
>>
>
> That doesn't follow.  If there is no longer a row 1 in the database, the
> object should no longer reference row 1.  Currently the object is left in an
> invalid state and save thinks an update is possible when it isn't.  The
> abstraction is leaking.



>  Keep in mind that there are many
>> different ways to destroy a record in a database that don't involve
>> calling
>> the .destroy method of the object instance.
>>
>
> Not relevant to this case.
>
>
>  What should happen is that the
>> .save method should return false if it can't insert or update the record
>> by
>> that id.
>>
>
> At a minimum, agreed; it should show the affected row count.  But success
> is better than failure and you still haven't acknowledged that a destroyed
> object is conceptually identical to a new object that hasn't been saved and
> logically, should behave the same.  Save could insert a new record and it
> would perfectly conceptually elegant and plug the leaking abstraction.
>
>
>  From following the thread it looks like its actually checking for
>> an SQL execution error and it is not receiving one from the database. What
>> its getting back is a successful execution of the SQL statement but a
>> message that states the there was no record to create/update. From this
>> information it then returns the incorrect state of true.
>>
>
> The current behavior is clearly wrong of course.
>
>
I see your point. Without being able to modify the object after the .destroy
call it becomes a read-only object of no value. However, being able to
salvage that object as "new" one would solve the issue. I like it.

B.

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