У меня есть модель User
, которая has_one Profile
(принадлежит пользователю). Для простоты я просто скажу, что у профиля есть поле location
и поле occupation
.Рельсы: Создание отношения has_one в модели с Omniauth
Я использую Omniauth
для создания Пользователей, но я также хотел бы создать прикрепленный файл Profile
в то же время. В настоящее время мой create
из OmniAuth метода заключается в следующем:
def self.create_from_omniauth(omniauth_data)
full_name = omniauth_data["info"]["name"].split(" ")
User.create(
provider: omniauth_data["provider"],
uid: omniauth_data["uid"],
first_name: full_name[0],
last_name: full_name[1],
email: omniauth_data["info"]["email"],
password: SecureRandom.hex(16)
)
end
мне интересно, как я должен включать строительство профиля в этом. Я знаю, has_one У меня есть доступ к методу build_profile
, но я также хочу убедиться, что он правильно подключен к моему объекту User. Любое понимание того, как я должен переформатировать, что create_from_omniauth
действие для правильной сборки связанного Profile
рядом с объектом User
было бы очень полезно.
Существует как минимум два способа сделать это, и если вы измените третью строку на 'user = User.create', вы можете сделать' user.create_profile() '. Вместо «User.create» и 'user.create_profile' используйте сборку, а затем сохраните ее сразу с помощью' user.save' –