Разработать гем аутентификации: как сохранить идентификатор пользователя, вошедшего в систему?

Я использую гем Devise Ruby в своем приложении Ruby on Rails 3. Когда вошедший в систему пользователь создает одну из моих моделей, я хочу сохранить его идентификатор пользователя как человека, который ее создал. Что я должен делать?


person Andrew    schedule 22.09.2010    source источник


Ответы (1)


  1. Создайте файл миграции со столбцом типа integer с именем user_id, здесь будет храниться ассоциация. (подробнее о том, как это сделать, см. в руководстве по миграции).

  2. в вашей модели добавьте: belongs_to :user (дополнительную информацию см. в руководстве по ассоциациям)

  3. в контроллере для вашей модели добавьте @your_model.user = current_user в действие создания. Это сделает ассоциацию, которую вы ищете. (current_user — это метод, предоставляемый devise, который возвращает User ActiveRecord для текущего пользователя, вошедшего в систему)

Примечание. существует несколько способов фактической ассоциации. Я предлагаю сделать это в контроллере, но это можно сделать в модели или где-то еще.

person Pierre-Luc Simard    schedule 22.09.2010
comment
не было бы безопаснее или более приверженным mvc, если бы модель позаботилась об этом? как бы вы это реализовали? - person jj_; 12.09.2012
comment
В модели есть несколько способов сделать это. Одним из них может быть использование before_create (см.: api.rubyonrails.org/classes/ ActiveRecord/Callbacks.html), чтобы установить связь с текущим_пользователем. - person Pierre-Luc Simard; 25.09.2012