2

User基本的にemailusernameを持つモデルがあります。nameposition、および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方法が見つからないようです。

4

1 に答える 1