has_many :through a belongs_to association

22 views
Skip to first unread message

Walther Diechmann

unread,
Oct 14, 2008, 10:27:11 AM10/14/08
to rubyonra...@googlegroups.com
I am on Rails 2.0.2 (not 2.1.x due to a couple of tickets) and if this
topic is invalid if only I upgraded, please excuse me for not being able
to have a perfect overview :(

My use case is: users are invited to events - and each event is
scheduled to 'perform' a number of times. This gives me the tables:
users, scheduled_events, event_users.

I have set up associations on the models like this:

- events has_many scheduled_events
- scheduled_events belongs_to event
- event_users belongs_to event and belongs_to user

Then I've tried to set up an association providing me with the scheduled
events to an invited user like this

- event_users has_many scheduled_events through event

But after googling about for the better part of a day and reading Josh
Susser extensively, I am lead to believe that has_many through only
works on has_many associations - ie. I'm not at liberty to go through a
belongs_to association.

Does anyone here have a take on how to solve this? Or am I perhaps just
messing this association thing up?

best regards,
Walt
--
Posted via http://www.ruby-forum.com/.

Pratik

unread,
Oct 14, 2008, 11:31:28 AM10/14/08
to rubyonra...@googlegroups.com
On Tue, Oct 14, 2008 at 4:27 PM, Walther Diechmann
<rails-mai...@andreas-s.net> wrote:
> But after googling about for the better part of a day and reading Josh
> Susser extensively, I am lead to believe that has_many through only
> works on has_many associations - ie. I'm not at liberty to go through a
> belongs_to association.
>
> Does anyone here have a take on how to solve this? Or am I perhaps just
> messing this association thing up?

This should work fine in Edge. Did you try to upgrade to edge ?

--
Cheers!
- Pratik
http://m.onkey.org

Walther Diechmann

unread,
Oct 14, 2008, 11:55:33 AM10/14/08
to rubyonra...@googlegroups.com

I'm overwhelmed - did not even dare to hope for any replies - and
certainly not this fast!

I am adding to a production site on 2.0.2 - and I have not been able to
find any good docs on how to upgrade to edge on my mac and still have my
2.0.2 development environment intact (it is _very_ important to me that
my existing 2.0.2 does work and will let me deploy to 2.0.2 production
sites)

Is that possible? Upgrading on my development mac - and still deploy to
2.0.2 production? And perhaps even - downgrading again - should the
upgrade turn out to hold to many TODOS?

thank you Pratik - I've come around your name on a great many posts,
tickets etc and I'm amased at the amount of work you put into this
community!

thank you again,
walt

Walther Diechmann

unread,
Oct 14, 2008, 4:35:04 PM10/14/08
to rubyonra...@googlegroups.com

Pratik,

I'll try the "freeze rails"-thing and see if that will do the trick :)

Walther Diechmann

unread,
Oct 14, 2008, 6:47:40 PM10/14/08
to rubyonra...@googlegroups.com

'shoot - I'll better stay of the freezing path - what started out as a
small Just-Let-Me-Fix-That-Association-For-You turned into a
I-Cannot-Start-My-Project-Due-To-Missing-Methods-On-Core :(

So, I froze - and the project likewize <:)

First missing method is render_file - and I'm afraid that once I get
that 'son of gun nailed', edge has a queue of missing things built up
for me!

Too bad though - I really could have used that hmt belongs_to ...

I cloned the rails.git off of github into its own folder, then symlinked
it into vendor/rails on my project.

Then I did script/server --debugger as usual - and it chokes with:

../vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb:33:in
`alias_method': undefined method `render_file' for class
`ActionView::Base' (NameError)

Walther Diechmann

unread,
Oct 14, 2008, 9:05:04 PM10/14/08
to rubyonra...@googlegroups.com
>
> ../vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.rb:33:in
> `alias_method': undefined method `render_file' for class
> `ActionView::Base' (NameError)

Chalked this one up on me not keeping tabs on inherit_views plugin which
orignally manhandled the render_file method - upgrading that plugin had
me move on...

- to the next problem: mislav_will_paginate (which he will not in edge
due to:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rubygems.rb:319:in
`activate':Gem::Exception: can't activate activesupport (>= 1.4.4),
already activated activesupport-2.2.0]

but that's not a problem - I commented these two dirty rotten
scoundrels:

gem 'mislav-will_paginate', '~> 2.2'
require 'will_paginate'

and off to the races, I was - in my script/console - eager to see the
promised land of has_many through a belongs_to.

Only to see this:

undefined method `quoted_table_name' for false:FalseClass
from
.../vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb:123:in
`construct_conditions'

Before all this turns sour - I'm going to dump this branch - and hurry
back in the comforting shadows of 2.0.2 with my original plugins intact.

The has_many on a belongs_to?

I did the utmost unDRYness I could come u with:

on my user I did

- has_many :event_users
- has_many :invitations, :through => :event_users, :source => :event

and then on my events_controller - I stabbed this into the find_resource
enclosing_resource.invitations.collect { |i|
i.scheduled_events.month_year(fd,ld) }.flatten

case closed (for me - but I still shiver from the tour de force into the
freeze)!

Roman Heinrich

unread,
Oct 16, 2008, 6:42:05 AM10/16/08
to Ruby on Rails: Talk
Just had the same unpleasant experience with bleeding edge, looks like
too much trouble... wanted the upcoming internationalization backed
into Rails directly, though. Sigh...

On Oct 15, 3:05 am, Walther Diechmann <rails-mailing-l...@andreas-
s.net> wrote:
> > ../vendor/rails/activesupport/lib/active_support/core_ext/module/aliasing.r b:33:in
> > `alias_method': undefined method `render_file' for class
> > `ActionView::Base' (NameError)
>
> Chalked this one up on me not keeping tabs on inherit_views plugin which
> orignally manhandled the render_file method - upgrading that plugin had
> me move on...
>
> - to the next problem: mislav_will_paginate (which he will not in edge
> due to:
>
> /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rub ygems.rb:319:in
> `activate':Gem::Exception: can't activate activesupport (>= 1.4.4),
> already activated activesupport-2.2.0]
>
> but that's not a problem - I commented these two dirty rotten
> scoundrels:
>
> gem 'mislav-will_paginate', '~> 2.2'
> require 'will_paginate'
>
> and off to the races, I was - in my script/console - eager to see the
> promised land of has_many through a belongs_to.
>
> Only to see this:
>
> undefined method `quoted_table_name' for false:FalseClass
> from
> .../vendor/rails/activerecord/lib/active_record/associations/has_many_throu gh_association.rb:123:in

Roman Heinrich

unread,
Oct 16, 2008, 8:20:05 AM10/16/08
to Ruby on Rails: Talk
Just spent couple of hours debugging it.... Well, Rails-Edge alone
seems to work fine, so I figured out it should be some plugin,
deactivating them one at a time I found out, that it is

has_many_polymorphs,

that doesn't like Edge and has_many-through-Associations.

Well, maybe it's time to say goodbye? Guess, Evan from http://blog.evanweaver.com/
doesn't have much time right now, working on Twitter.

Cheers,
Roman

Pratik

unread,
Oct 16, 2008, 9:10:52 AM10/16/08
to rubyonra...@googlegroups.com
@Walt Hey, sorry I got busy and couldn't look at this thread.

@Roman : If you could mention the exact issues, I could fix
has_many_polymorphs plugin. Or if you can submit a patch, that works
the best!

--

Roman Heinrich

unread,
Oct 16, 2008, 9:46:48 AM10/16/08
to Ruby on Rails: Talk
@Pratik: Thanks! I created a github project to showcase the issue:

http://github.com/mindreframer/hmp_and_edgerails_2.2/tree/master


Hope, that's OK.

On Oct 16, 3:10 pm, Pratik <pratikn...@gmail.com> wrote:
> @Walt Hey, sorry I got busy and couldn't look at this thread.
>
> @Roman : If you could mention the exact issues, I could fix
> has_many_polymorphs plugin. Or if you can submit a patch, that works
> the best!
>
> On Thu, Oct 16, 2008 at 2:20 PM, Roman Heinrich
>
>
>
> <roman.heinr...@gmail.com> wrote:
>
> > Just spent couple of hours debugging it.... Well, Rails-Edge alone
> > seems to work fine, so I figured out it should be some plugin,
> > deactivating them one at a time I found out, that it is
>
> > has_many_polymorphs,
>
> > that doesn't like Edge and has_many-through-Associations.
>
> > Well, maybe it's time to say goodbye? Guess, Evan fromhttp://blog.evanweaver.com/

Martin Gamsjaeger

unread,
Oct 17, 2008, 11:19:38 AM10/17/08
to Ruby on Rails: Talk
Hi all,

I fixed this issue, it's available at http://github.com/snusnu/has_many_polymorphs/tree/master

cheers
Martin

Roman Heinrich

unread,
Oct 17, 2008, 1:40:06 PM10/17/08
to Ruby on Rails: Talk
Thanks a lot!

Roman

On Oct 17, 5:19 pm, Martin Gamsjaeger <gamsnj...@gmail.com> wrote:
> Hi all,
>
> I fixed this issue, it's available athttp://github.com/snusnu/has_many_polymorphs/tree/master

Walther Diechmann

unread,
Oct 17, 2008, 8:59:45 PM10/17/08
to rubyonra...@googlegroups.com
Pratik Naik wrote:
> @Walt Hey, sorry I got busy and couldn't look at this thread.

@Pratik - no problem :)

I will have to feel my way into this edge business (and not bag a bundle
of plugins along on the ride) :D

But thank you even so for caring and your time!

@Martin Gamsjaeger

Thank you too! I have put your hmp top of my "clone-list" for when I
dare threading into deep freeze edge waters next time :D

best regards,
walt

edvin

unread,
Oct 28, 2008, 4:11:29 AM10/28/08
to Ruby on Rails: Talk
Martin,

Your fix seems to address some of the issues, but calling the the
polymorphic association class still raises the same:

NoMethodError undefined method `macro' for false:FalseClass

For example

Site has Tags through Taggings

calling Tag.taggables raises the above error

Any ideas?

On Oct 17, 8:19 am, Martin Gamsjaeger <gamsnj...@gmail.com> wrote:
> Hi all,
>
> I fixed this issue, it's available athttp://github.com/snusnu/has_many_polymorphs/tree/master

ed

unread,
Nov 11, 2008, 7:08:04 PM11/11/08
to Ruby on Rails: Talk
@edvin: Tag-related: http://github.com/tejo/has_many_polymorphs/commit/a3710a131e0bcfc1d1939f28246f4e9f60732835

I'm porting a 1.2.6 app to 2.2.0 and found that using Martin
Gamsjaeger's fork fixed most HMP issues though I still get the method
error for 'macro' as you do. Can't quite figure it out. Anyone else
get it? I'm not seeing any forks on Github dealing with the error.

Ed

Nicholas Henry

unread,
Nov 14, 2008, 12:09:37 AM11/14/08
to rubyonra...@googlegroups.com
I've tried a couple of forks on Github as well with no luck. Would love
to see this work on Rails 2.2 as well.

Nicholas

ed wrote:
> @edvin: Tag-related:
> http://github.com/tejo/has_many_polymorphs/commit/a3710a131e0bcfc1d1939f28246f4e9f60732835
>
> I'm porting a 1.2.6 app to 2.2.0 and found that using Martin
> Gamsjaeger's fork fixed most HMP issues though I still get the method
> error for 'macro' as you do. Can't quite figure it out. Anyone else
> get it? I'm not seeing any forks on Github dealing with the error.
>
> Ed

--
Posted via http://www.ruby-forum.com/.

jko170

unread,
Nov 25, 2008, 5:36:08 PM11/25/08
to Ruby on Rails: Talk
Anyone have a fix for this?

On Nov 13, 11:09 pm, Nicholas Henry <rails-mailing-l...@andreas-s.net>
wrote:
> I've tried a couple of forks on Github as well with no luck. Would love
> to see this work on Rails 2.2 as well.
>
> Nicholas
>
> ed wrote:
> > @edvin: Tag-related:
> >http://github.com/tejo/has_many_polymorphs/commit/a3710a131e0bcfc1d19...

Martin Gamsjaeger

unread,
Nov 25, 2008, 6:27:52 PM11/25/08
to Ruby on Rails: Talk
Hey,

Sorry I didn't get back to that thread for so long! I must have
overlooked it ... maybe because my fix is still working for me (using
rails-2.2.2, but using mostly my own additional methods). That said,
I'm not really sure how to reproduce the error you guys get. Maybe
it's a good idea to put a sample app that triggers the error up on
github? I could have a look tommorrow evening, although I must say
that I really don't know too much about the plugins code! I just
noticed a method in hmp that is an almost exact duplicate of a rails
method, and updated hmp's one to reflect the latest rails code (that
basically was the last fix).

Besides that, my commit got pulled back into the main repo at
http://github.com/fauna/has_many_polymorphs/tree/master recently.
Maybe this means that the original author might be available for
action :-)?

Anyways, a sample barebone rails-2.2.2 app on github that showcases
the error would help!

cheers
snusnu

Nick Coyne

unread,
Nov 27, 2008, 5:28:29 AM11/27/08
to rubyonra...@googlegroups.com
I'm using the latest patched version of hmp, however I'm still receiving
this:

NoMethodError (undefined method `quoted_table_name' for
false:FalseClass):
/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb:123:in
`construct_conditions'
/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb:191:in
`construct_sql'
/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb:21:in
`initialize'
/vendor/rails/activerecord/lib/active_record/associations/has_many_through_association.rb:6:in
`initialize'
/vendor/rails/activerecord/lib/active_record/associations.rb:1297:in
`new'
/vendor/rails/activerecord/lib/active_record/associations.rb:1297:in
`groups'

Any ideas?

Thx
Nick


Martin Gamsjaeger wrote:
> Hey,
>
> Sorry I didn't get back to that thread for so long! I must have
> overlooked it ... maybe because my fix is still working for me (using
> rails-2.2.2, but using mostly my own additional methods). That said,
> I'm not really sure how to reproduce the error you guys get. Maybe
> it's a good idea to put a sample app that triggers the error up on
> github? I could have a look tommorrow evening, although I must say
> that I really don't know too much about the plugins code! I just
> noticed a method in hmp that is an almost exact duplicate of a rails
> method, and updated hmp's one to reflect the latest rails code (that
> basically was the last fix).

--
Posted via http://www.ruby-forum.com/.

Niels

unread,
Nov 29, 2008, 8:00:04 PM11/29/08
to Ruby on Rails: Talk

Nick Coyne

unread,
Dec 1, 2008, 1:58:41 AM12/1/08
to rubyonra...@googlegroups.com
Thanks. All up and running now.

--
Posted via http://www.ruby-forum.com/.

Reply all
Reply to author
Forward
0 new messages