ruby on rails - has_many through help, what am I doing wrong? -


my models this:

user    has_and_belongs_to_many :roles  role    has_and_belongs_to_many :users 

tables:

roles_users    user_id    role_id  rolegroups    id    role_id    some_column 

now want create association on user model, collection of rolegroups user belongs to.

i.e. if user in roles id's 1 , 2, fetch rolegroups role_id = 1 , 2.

i think need use through because based on user's role association right?

i tried:

user    has_many  :rolegroups, :through => :roles  role    has_many :rolegroups, :through => :user 

but error saying:

activerecord::hasmanythroughsourceassociationmacroerror: invalid source reflection macro :has_many :through has_many :rolegroups, :through => :roles.  use :source specify source reflection. 

update ok models now:

user    habtm :roles    has_many :rolegroups, :through => :roles  role   habtm :users   has_many :rolegroups  rolegroup   belongs_to :role 

mysql tables:

roles_users    user_id    role_id  role_groups    id    role_id    col3    col4    .. 

if do:

u = user.find(1) u.roles  (works fine) u.rolegroups   #see error 

error message:

activerecord::statementinvalid: mysql2::error: unknown column 'roles.user_id' in 'where clause': select `role_groups`.* `role_groups` inner join `roles` on `role_groups`.role_id = `roles`.id ((`roles`.user_id = 1)) 

you're looking has_and_belongs_to_many association.


Comments

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

android - layout with fragment and framelayout replaced by another fragment and framelayout -