I posted this to lighthouse and was advised to post here instead.
I think that has_many :through should create the :through association if it's not already declared.
Example:
class User < ActiveRecord::Base has_many :memberships has_many :groups, :through => :memberships end
Why do I need to declare :memberships twice? Shouldn't this suffice?
class User < ActiveRecord::Base has_many :groups, :through => :memberships end
Even if the memberships association is more complex, this could be wrapped in a hash
class User < ActiveRecord::Base has_many :groups, :through => { :memberships, :dependent => :destroy } end
In terms of expressiveness, I can see the value in declaring the join model explicitly if that join model has significance, but sometimes join models are only really useful on one side of the join, while on the other side it's just noise.
WDYT?