2010-09-22 2 views
4

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

ответ

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

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

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

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

+0

не было бы более безопасным или более приверженным mvc, чтобы модель позаботилась об этом? как бы вы это реализовали? –

+0

Существует несколько способов сделать это в модели. Одним из них будет использование функции before_create (см. Http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html), чтобы принудительно установить связь с current_user. –