0

我的用户表中有一个名为“图像”的列

此图像存储从用户的 Twitter 帐户中提取的头像的 URL。

用户表的一部分

create_table "users", :force => true do |t|
    t.string    "image"
  end 

我正在使用omniauth 来允许用户使用twitter、取消身份验证、重新身份验证等进行身份验证。

在他们取消身份验证并尝试重新进行身份验证之后,我想验证头像在我的网站上是否匹配。这是我正在使用的代码:

class AuthenticationsController < InheritedResources::Base
 def create
  omniauth = request.env['omniauth.auth']
  authentication = Authentication.find_by_provider_and_uid(omniauth['provider'], omniauth['uid'])
  if authentication
     user = User.find(authentication.user_id)
     sign_in_and_redirect user
  else current_user
   token = omniauth['credentials']['token']
   secret = omniauth['credentials']['secret']
   current_user.authentications.create!(:provider => omniauth['provider'], :uid => omniauth['uid'], :token => token, :secret => secret)
   current_user.update_attribute(:image => omniauth['info']['image'])
   flash[:success] = "Authentication successful"
   sign_in_and_redirect current_user
  end
 end

当他们尝试重新验证时,基本上就是这条线

current_user.update_attribute(:image => omniauth['info']['image'])

但是我遇到了错误。上面这个特定的代码给了我wrong number of arguments (1 for 2)。我尝试了其他方法,但我得到了undefined method update_attribute。任何人都知道如何使用来自 twitter + omniauth 的数据更新用户表中的“图像”列?

4

1 回答 1

0

查看 的语法update_attribute,它有 2 个参数namevalue

current_user.update_attribute(:image, omniauth['info']['image'])

此外,我很确定 twitter 中的头像 url 永远不会改变:它总是显示用户当前的头像。所以你不需要在你的数据库中更新它,直接在你的页面中使用它就可以得到最新的用户头像。

于 2013-04-14T08:19:31.503 回答