Rails Activerecord: создать или обновить после HTTP-метода POST - PullRequest
0 голосов
/ 18 ноября 2011

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

Вопрос: Как сделатьЯ заверяю, что Rails создает или обновляет поле IP, которое также должно быть уникальным в базе данных.Я отправил HTTP-запрос POST с устройства Android на «http://192.168.5.3:3000/users/create?user[user_ip]="+myIp+"user[user_name]="+name

». Поэтому на стороне сервера Rails Rails должен проверить, существует ли myIp, и если да, он должен обновить «user_name» на «name», и если онне найдет myIp, он должен создать новую запись с обоими полями.

Должен ли я использовать before_create в модели user.rb? Или как мне это сделать? Должен ли я использовать POST или PUT? Если я должениспользуйте PUT, тогда я не знаю идентификатор, если пользователь существует.

Или мне вообще не следует использовать действие Rails "создать" и написать собственный метод Webservice?

Извинитеза такой, может быть, идиотский вопрос, но почему-то я не могу понять!

Спасибо за помощь заранее!

1 Ответ

0 голосов
/ 18 ноября 2011

Вы хотите использовать PUT для обновления и POST для создания.Если вы знаете, что пользователь существует, но у вас нет идентификатора, вы будете использовать запрос PUT, а в методе обновления у вас будет что-то вроде этого:

def update
  @user = User.find_by_ip(params[:ip])
  if @user.update_attributes(...)
    #success
  else
    #failure
  end
end

Опять же, идеальный методбыло бы передать идентификатор в обновление, но если вы не можете это сделать, вы не хотите жертвовать соглашениями RESTful.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...