Raunak Joneja
Raunak Joneja

Reputation: 561

wrong number of arguments (given 0, expected 1) when calling update_attributes

I have a method that is called every time the user signs in to my app using facebook or gplus, where I update all the user fields on each sign in.

   user = where(:email => email).first_or_create do |user|
      user.uid = uid
      user.email = email
      user.provider = provider
      user.save!
    end
    user.first_name = auth["first_name"]
    user.last_name = auth["last_name"]
    user.nickname = auth["first_name"]
    user.name = auth["name"]
    user.gender = auth["gender"]
    user.role = "user"
    user.latitude = 0
    user.longitude = 0
    user.update_attributes(user.attributes)
    user

but i get the following error everytime this method is called, in a similar note, I get this error even when I try updating a single attribute

user.upate_attributes(:token => token)

wrong number of arguments (given 0, expected 1)

can't seem to figure out why

Upvotes: 0

Views: 919

Answers (1)

Deepak Mahakale
Deepak Mahakale

Reputation: 23711

Why don't you just save the user instance

# ...
user.longitude = 0
user.save

or try this way

user.update_attributes(
  first_name: auth["first_name"],
  last_name: auth["last_name"],
  nickname: auth["first_name"],
  name: auth["name"],
  gender: auth["gender"],
  role: "user",
  latitude: 0,
  longitude: 0
)

Also, In your second command, there is a typo

user.upate_attributes(:token => token)
# Change to 
user.update_attributes(:token => token)

Upvotes: 2

Related Questions