Rails Activerecord:在HTTP POST方法之后创建或更新

时间:2011-11-18 16:14:59

标签: ruby-on-rails

我是Rails和Android的新手,所以如果问题在某个地方得到解答,请不要怪我,但在寻找答案后我找不到任何答案。

问题:如何确保Rails创建或更新字段IP,该字段IP在数据库中也应该是唯一的。我从Android设备发送HTTP POST到“http://192.168.5.3:3000/users/create?user[user_ip]=”+ myIp +“user [user_name] =”+ name

所以在Rails的服务器端,Rails应该检查myIp是否已经存在,如果是,它应该将“user_name”更新为“name”,如果它找不到myIp,它应该创建一个新的记录两个领域。

我应该在user.rb模型中使用before_create吗?或者我该怎么做?我应该使用POST还是PUT?如果我应该使用PUT,那么如果用户存在,我就不知道id。

或者我不应该使用Rails操作“create”并编写自定义Webservice方法?

对不起这个可能很蹩脚的问题,但不知怎的,我无法弄明白!

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您想要使用PUT进行更新,使用POST进行创建。如果你知道用户存在,但你没有id,你会使用PUT请求,在更新方法中,你会有这样的东西:

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

同样,理想的方法是将id传递给更新,但如果你不能这样做,你就不想牺牲RESTful约定。