Я преподаю Rails, и я пытаюсь настроить такие отношения сотрудничества, как Github добавляет коллабораторов к проектам. Мои модели выглядят следующим образом:Настройка связи между пользователями для доступа к ресурсу
class Restaurant < ActiveRecord::Base
has_many :employees
has_many :users, through: :employees
end
class User < ActiveRecord::Base
has_many :employees
has_many :restaurants, through: :employees
end
class Employee < ActiveRecord::Base
belongs_to :restaurant
belongs_to :user
end
стол Работник также имеет столбец user_type для обработки разрешений в рамках проекта (ресторан). Я не могу понять, как заставить мой employee_controller установить это отношение. Первичный ключ пользователя: электронная почта, поэтому я предполагаю, что форма должна иметь возможность получить параметр: email, проверить, существует ли такой пользователь с введенным адресом электронной почты, и добавить отношение к таблице сотрудников.
Я ищу, чтобы быть в состоянии сделать что-то вроде этого:
Restaurant_A = Restaurant.create(restaurant_params)
User_A.restaurants = Restaurant_A
Restaurant_A.employees = User_B
Я думаю, что мои модели могут быть неправильно, но в основном я хотел бы иметь возможность пользователям возможность создавать ресторан а также быть добавленными в качестве сотрудников другого ресторана/собственных ресторанов.
Вижу, спасибо Арслан :). Управляется, чтобы сделать первую часть при создании ресторана. Сообщите, если я застрял на другой стороне ассоциации при добавлении сотрудников. –
Определенно застрял. Не возражаете ли вы рассказать мне, как бы вы продвинулись и создать форму для получения параметра: email в Rails 4? После этого я предполагаю, что могу сделать что-то в соответствии с User.find_by (электронная почта: params [: email]) –
Вам нужна форма, в которой пользователь мог бы прийти, поместить свой адрес электронной почты и затем нажать кнопку отправки? Так вы хотите получить параметр 'email'? –