User
基本的にemailとusernameを持つモデルがあります。name、position、およびdescription
を持つ
ネストされたProfile
モデルがあります。
User
がサインアップするときは、すべて(説明を除く) が必要です。このネストされたモデルで完全に機能する単一のフォームがあります。
今度はOauthです。訪問者が GitHub アカウントを使用してサインアップできるようにしたいと考えています。
このメソッド ( RailsCast #235User
) を使用すると、新しい属性を初期化し、プロバイダー、uid、電子メール、およびユーザー名の4 つの属性を自動的に入力できます。User
def self.from_omniauth(auth)
where(auth.slice(:provider, :uid)).first_or_initialize do |user|
user.provider = auth.provider
user.uid = auth.uid
user.email = auth.info.email
user.username = auth.info.nickname
end
end
しかし、ネストされた Profile をnameで初期化し、最終的にはpositionを初期化し、GitHub から取得したハッシュからの情報を入力したいと考えています。
user.build_profile(:name => auth.info.name)
orのようなものを入れてみましたが、このネストされた要素を構築するuser.profile.name = auth.info.name
方法が見つからないようです。