El Wednesday 11 March 2009 11:19:38 Dovadi escribió: > I'm struggling to get ActiveScaffold working with users, roles and > has_many through association between them (I'm using the rails- > authorization-plugin). > > class Role < ActiveRecord::Base > has_many :roles_users, :dependent => :delete_all > has_many :users, :through => :roles_users > belongs_to :authorizable, :polymorphic => true > end > > class User < ActiveRecors::Base > has_many :roles_users, :dependent => :delete_all) > has_many :roles, :through => :roles_users > end > > class UsersController < ApplicationController > active_scaffold do |config| > config.columns = [:email, :active, :roles] > end > end
Why don't you use habtm? class Role < ActiveRecord::Base has_and_belongs_to_many :users, :dependent => :delete_all belongs_to :authorizable, :polymorphic => true end class User < ActiveRecors::Base has_and_belongs_to_many :roles, :dependent => :delete_all end I think when you use has_many and has_many :through, intermediate table must have an id, habtm tables doesn't have an id. > > I see the roles of the user as a link (http://local.host:3000/admin/2/ > nested?_method=get&associations=roles) in my view, but when I follow > this link I get an error: > > ActiveRecord::StatementInvalid (Mysql::Error: Unknown column > 'roles_users_roles.id' in 'field list': SELECT `roles`.`id` AS t0_r0, > `roles`.`name` AS t0_r1, `roles`.`authorizable_type` AS t0_r2, > `roles`.`authorizable_id` AS t0_r3, `roles`.`created_at` AS t0_r4, > `roles`.`updated_at` AS t0_r5, `users`.`id` AS t1_r0, `users`.`email` > AS t1_r1, `users`.`encrypted_password` AS t1_r2, `users`.`salt` AS > t1_r3, `users`.`token` AS t1_r4, `users`.`token_expires_at` AS t1_r5, > `users`.`email_confirmed` AS t1_r6, `users`.`active` AS t1_r7, > `roles_users_roles`.`id` AS t2_r0, `roles_users_roles`.`user_id` AS > t2_r1, `roles_users_roles`.`role_id` AS t2_r2, > `roles_users_roles`.`created_at` AS t2_r3, > `roles_users_roles`.`updated_at` AS t2_r4, `users_roles_users`.`id` AS > t3_r0, `users_roles_users`.`email` AS t3_r1, > `users_roles_users`.`encrypted_password` AS t3_r2, > `users_roles_users`.`salt` AS t3_r3, `users_roles_users`.`token` AS > t3_r4, `users_roles_users`.`token_expires_at` AS t3_r5, > `users_roles_users`.`email_confirmed` AS t3_r6, > `users_roles_users`.`active` AS t3_r7 FROM `roles` LEFT OUTER JOIN > `roles_users` ON (`roles`.`id` = `roles_users`.`role_id`) LEFT OUTER > JOIN `users` ON (`users`.`id` = `roles_users`.`user_id`) LEFT OUTER > JOIN `roles_users` roles_users_roles ON roles_users_roles.role_id = > roles.id LEFT OUTER JOIN `users` users_roles_users ON > `users_roles_users`.id = `roles_users_roles`.user_id WHERE (users.id > = '2') AND `roles`.id IN (2, 4) ORDER BY roles.`id` ASC): > > The SQL statement is wrong, there is no roles_users_roles.id, but I > think I'm doing something wrong here and using the wrong approach. > > In the end I want something with config.columns[:roles].form_ui > = :select in the users controller, but this fails to render (also a > sql error Unknown column 'users_users.user_id' in 'on clause': > SELECT ......) > > Can someone help me out? > > Thanks, Frank > > -- Sergio Cambra .:: entreCables S.L. ::. Nicolás Guillén 6, locales 2 y 3. 50.018 Zaragoza T) 902 021 404 F) 976 52 98 07 E) [email protected] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "ActiveScaffold : Ruby on Rails plugin" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/activescaffold?hl=en -~----------~----~----~----~------~----~------~--~---
