Doing creates on has_many_through associations with :conditions?

I’m confused about something I thought should work. I have tables Users
and Blogs, joined together through Memberships. Membership also has a
boolean for moderator-ness. So, the Blog model looks like this:

class Blog < ActiveRecord::Base
has_many :memberships

has_many :users,
:through => :memberships

has_many :moderators,
:through => :memberships,
:source => :user,
:conditions => { :memberships => {:moderator => true} }
end

Imagine something trivial like this:

b = Blog.create(:name => ‘politics’)
user1 = User.create(:name => ‘billg’)
user2 = User.create(:name => ‘dhh’)

b.users << user1
b.moderators << user1
b.save!

I see this

b.memberships
±—±--------±--------±----------+
| id | user_id | blog_id | moderator |
| 1 | 1 | 1 | |
| 2 | 2 | 1 | |
±—±--------±--------±----------+

Which seems plain wrong. I’d think the moderator column should be ‘t’
for the second user’s membership since he was added via the :moderators
association which has a conditions clause.

What am I misunderstanding? Thanks much.

-Eric

ps: Rails 2.3.4

pps: no apparent difference if I rewrite the conditions to array-style.

ppps: it has been mentioned that ticket #2998
https://rails.lighthouseapp.com/projects/8994/tickets/2998 is related,
but that seems to be about the query side, not the record-creation side.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs