Я использую гем Devise Ruby в своем приложении Ruby on Rails 3. Когда вошедший в систему пользователь создает одну из моих моделей, я хочу сохранить его идентификатор пользователя как человека, который ее создал. Что я должен делать?
Разработать гем аутентификации: как сохранить идентификатор пользователя, вошедшего в систему?
Ответы (1)
Создайте файл миграции со столбцом типа
integer
с именемuser_id
, здесь будет храниться ассоциация. (подробнее о том, как это сделать, см. в руководстве по миграции).в вашей модели добавьте:
belongs_to :user
(дополнительную информацию см. в руководстве по ассоциациям)в контроллере для вашей модели добавьте
@your_model.user = current_user
в действие создания. Это сделает ассоциацию, которую вы ищете. (current_user
— это метод, предоставляемый devise, который возвращает User ActiveRecord для текущего пользователя, вошедшего в систему)
Примечание. существует несколько способов фактической ассоциации. Я предлагаю сделать это в контроллере, но это можно сделать в модели или где-то еще.
person
Pierre-Luc Simard
schedule
22.09.2010
не было бы безопаснее или более приверженным mvc, если бы модель позаботилась об этом? как бы вы это реализовали?
- person jj_; 12.09.2012
В модели есть несколько способов сделать это. Одним из них может быть использование before_create (см.: api.rubyonrails.org/classes/ ActiveRecord/Callbacks.html), чтобы установить связь с текущим_пользователем.
- person Pierre-Luc Simard; 25.09.2012