[rspec-users] Associations should be private

David Chelimsky dchelimsky at gmail.com
Wed Oct 1 09:11:55 EDT 2008


On Wed, Oct 1, 2008 at 7:54 AM, Ashley Moran
<ashley.moran at patchspace.co.uk> wrote:
> Hi
>
> The discussion among me, David, Michael, and Pat got me thinking.
>  Specifically this by Michael:
>
>> Just my $0.02, but I really like specs to be treated as specifications for
>> what SHOULD be happening, not pretending other code is different than it is.
>
> This made me think the real solution is for ActiveRecord/A N Other ORM to
> declare that its associations are proxies and not arrays.  But that's
> *terrible*, because it's encouraging users to manipulate the ORM objects'
> structures.
>
> So what if you flatly make all associations private?  Is this a good idea?
>  Has anyone tried it?

It's been a while since I've taken a look at it, but Luke Redpath has
a plugin called Demeter's Revenge
(http://plugins.code.lukeredpath.co.uk/browser/demeters_revenge/trunk)
that actually manages this all for you by adding methods like
team.add_player that wrap chains like team.players.add. It's a year
old and I don't know if it works w/ the latest rails updates or not.

I think that if you're actually writing a bunch of boilerplate code
the same way over and over without a plugin like that, then it's
probably painful. With something like that it's painless and
expressive and seriously cleans up your controller code examples.

Glancing at github, I see one other library up there that tries to
solve the same problem. Will have to look closer later at
http://github.com/trotter/belongs_to_demeter.

Cheers,
David

>
> Ashley
>
> --
> http://www.patchspace.co.uk/
> http://aviewfromafar.net/
>
>
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list