Вот примерно то, что у меня есть:
У меня много компаний, у которых много ролей пользователей:
class Company < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :users, :through => :roles
end
и много пользователей, которые могут иметь много компаний через роли:
class User < ActiveRecord::Base
has_many :roles, :dependent => :destroy
has_many :comapnies, :through => :roles
end
и множество ролей, которые связывают их вместе:
class Role < ActiveRecord::Base
belongs_to :user
belongs_to :company
end
Идея в том, что пользователь может войти в систему с помощью общего имени пользователя электронной почты, а затем назначить привилегии каждой компании. Роль имеет ключи user_id и company_id вместе со столбцом привилегий user_role (то есть гость, пользователь, администратор и т. Д.).
Вот здесь меня и ругает новичок. Когда мой пользователь входит в систему, я хочу узнать, на какие компании у них есть привилегии, и переключить их на лету с помощью выпадающего меню. Таким образом, они входят в систему и активны в «Компания А», а затем они могут переключиться на «Компания Б». Когда они переключаются, company_id сохраняется в переменной сеанса (у меня уже есть user_id, сохраненный в работающей системе аутентификации).
Как лучше всего это сделать? У меня есть user_id, и я хочу получить список company_id, company_name, 'user_role' и т. Д., А затем использовать его для создания всплывающего списка.
Я играл с консолью, пытаясь Role.Company.etc.etc
, но не могу понять это. Когда я делал это в PHP / MySQL, раньше это был сложный запрос на соединение. Я уверен, что в Rails легче, я, кажется, не могу понять это.
Любая помощь будет оценена.
Спасибо
Dan