This seems helpful. I'll take a look at edge.

On Feb 4, 2:43 pm, Jon Leighton <[email protected]> wrote:
> Hey,
>
> In edge rails there is a mechanism for checking whether the loaded
> association target is "stale" - so if you do record.foo_id = x, then
> record.foo will load the target afresh.
>
> I'm not sure whether it necessarily works with validation like this, but
> hopefully it does. [I haven't tried.]
>
> Just to emphasise, this is new in edge - it is not in the 3-0-stable
> branch.
>
> Jon
>
>
>
>
>
>
>
>
>
> On Fri, 2011-02-04 at 15:39 -0500, Ernie Miller wrote:
> > On Feb 4, 2011, at 3:30 PM, Paul wrote:
>
> > > Rails is great and most things just work easily. However, I've never
> > > been able to get a definite answer on whether one should do,
>
> > > validates :parent, :presence => true
>
> > > or,
>
> > > validates :parent_id, :presence => true
>
> > > given,
>
> > > class Parent
> > > end
>
> > > class Child
> > >  belongs_to :parent
> > > end
>
> > > I've always thought that validating the :parent (and not the foreign
> > > key) is the *more* correct thing to do ... but I don't understand why
> > > Rails does not reset the parent association when the parent_id is
> > > changed as demonstrated here,
>
> > > child = Child.find(..)
> > > child.parent_id = nil
> > > puts child.valid? # outputs false
>
> > > child = Child.find(..)
> > > child.parent
> > > child.parent_id = nil
> > > puts child.valid? # outputs true!
>
> > > Any thoughts?
>
> > This is due to the way that association proxies lazy load their targets. In 
> > the first case, if you only loaded the child record, and modified the 
> > parent_id attribute, then you never load the parent object, because you 
> > never accessed the association proxy.
>
> > In the latter case, you did access the association proxy, so the parent got 
> > loaded, but then you modified the parent_id, directly. I'd recommend that 
> > you be consistent -- if you're checking if the associated object exists, 
> > set the association to nil, instead of the id, and you shouldn't have a 
> > problem.
>
> --http://jonathanleighton.com/
>
>  signature.asc
> < 1KViewDownload

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" 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-core?hl=en.

Reply via email to