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
#2998 [PATCH] SQL generated by find ignores :include option - Ruby on Rails - rails is related,
but that seems to be about the query side, not the record-creation side.