2014-02-02 3 views
1

Я создаю API с использованием рельсов, и мой метод обновления действует нечетно.Rails API не обновляет записи

Я использую curl для обновления пользователей, и когда я смотрю в серверный терминал rails, кажется, что он обновил их, но когда я ищу пользователя в консоли rails, он не изменился.

То же самое, если я пытаюсь скрутить одиночную запись пользователя. Он изменится только в том случае, если я закрою обновление 3 раза.

Вот мой метод обновления:

def update 
    respond_with User.find_by(params[:uid]).update(user_params) 
end 

private 

def user_params 
    params.require(:user).permit(:username, :uid, :provider, :image_url, :full_name, :colour) 
end 

Завитка команды я использую в качестве последующей

curl -v -H "Accept: application/json" -H "Content-type: application/json" -X PUT -d '{"username":"Bradley Jamil"}' http://localhost:3000/api/v1/users/81888 

И это выход из терминала terminal output

пользователя в вопрос не меняется, пока я не запустил тот же запрос на завивание еще 2 раза.

Также здесь то, что моя модель пользователя выглядит

# User Class 
    class User < ActiveRecord::Base 
     has_many :friendships 
     has_many :friends, through: :friendships 
     has_many :inverse_friendships, class_name: 'Friendship', foreign_key: 'friend_id' 
     has_many :inverse_friends, through: :inverse_friendships, source: :user 

     validates :provider, :uid, :username, :image_url, :full_name, :colour, presence: true 
     validates :uid, uniqueness: true 
     validates :provider, format: /\A(twitter)\Z/ 
    end 
+0

Опубликовать свои команды завитки и журналы рельсов. и, пожалуйста, следите за своей грамматикой и четкостью сообщения. –

+0

Вам не нужны 'update_attributes', а не' update'? – Gene

+0

Я также попытался использовать 'update_attributes' вместо' update', и результат был тот же. – Valkyrie0512

ответ

0

Как комментарии предполагают, я думаю, что есть проблема проверки, и я не совсем уверен, что вы вызываете сохранить.

Я бы сделал что-то вроде этого, по крайней мере, для отладки.

def update 
    respond_with User.find_by(params[:uid]).assign_attributes(user_params).save! 
    end 

Здесь мы делаем массовое обновление атрибутов (в памяти), а затем смыв в БД с save! Как вы, наверное, знаете, save! вернется true или вызвать исключение в случае неудачи.

В журнале будет отображаться исключение, и завиток будет получать ошибку уровня 400 или 500 в зависимости от того, сколько магических рельсов существует при проверке ошибок проверки и возврате правильного кода ответа.

Смежные вопросы