Я использую драгоценный камень Devise Ruby в приложении Ruby on Rails 3. Когда вошедший в систему пользователь создает одну из моих моделей, я хочу сохранить их идентификатор пользователя как человека, который его создал. Что мне делать?Утилита проверки подлинности: как сохранить зарегистрированный идентификатор пользователя?
4
A
ответ
6
Создать миграционный файл со столбцом типа
integer
именемuser_id
, это где ассоциация будет сохранена. (подробности см. в разделе migration guide).в вашей модели, добавьте:
belongs_to :user
(см associations guide для более подробной информации)в контроллере для вашей модели, добавьте
@your_model.user = current_user
в создании действия. Это сделает вашу ассоциацию, которую вы ищете. (current_user
является метод, предоставляемый по завещанию, который возвращает пользователя ActiveRecord для текущего пользователя)
Примечание: есть более чем один способ сделать фактическое объединение. Я предлагаю сделать это в контроллере, но это можно сделать в модели или в другом месте.
не было бы более безопасным или более приверженным mvc, чтобы модель позаботилась об этом? как бы вы это реализовали? –
Существует несколько способов сделать это в модели. Одним из них будет использование функции before_create (см. Http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html), чтобы принудительно установить связь с current_user. –