我有一个User
基本上包含电子邮件和用户名的模型。
我有一个嵌套Profile
模型,它有一个名称、一个位置和一个描述。
当 aUser
注册时,所有内容(除了描述)都是必需的。我有一个与这个嵌套模型完美配合的表单。
现在来了Oauth:我想允许访问者使用他们的 GitHub 帐户进行注册。
这个方法(RailsCast #235)允许我初始化一个新的User
并自动填写4 个User
属性:provider、uid、email 和 username。
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
但我还想用name初始化一个嵌套的 Profile ,最后是position,其中填充了我从 GitHub 获得的散列信息。
我尝试放置类似的东西user.build_profile(:name => auth.info.name)
,user.profile.name = auth.info.name
但我似乎无法找到如何构建这个嵌套元素。