【发布时间】:2013-07-03 00:34:08
【问题描述】:
我有一个User 模型,基本上有一个电子邮件和一个用户名。
我有一个嵌套的Profile 模型,它有一个名称、一个位置和一个描述。
当User 注册时,一切(除了描述)都是必需的。我有一个与这个嵌套模型完美配合的表单。
现在是 Oauth:我希望允许访问者使用他们的 GitHub 帐户进行注册。
这个方法 (RailsCast #235) 允许我初始化一个新的User 并自动填写 4 User 属性:提供者、uid、电子邮件和用户名。
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 初始化一个嵌套的配置文件,最后用 position 填充我从 GitHub 获得的哈希信息。
我尝试放置 user.build_profile(:name => auth.info.name) 或 user.profile.name = auth.info.name 之类的内容,但我似乎找不到如何构建这个嵌套元素。
【问题讨论】:
标签: ruby-on-rails oauth nested-attributes