我是Rails和Android的新手,所以如果問題在某個地方回答之前請不要責怪我,但在搜索答案之後我找不到任何東西。Rails Activerecord:在HTTP POST方法之後創建或更新
問題:如何確保Rails創建或更新字段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動作「創建」,並寫一個自定義的Webservice方法?
對不起,這可能是跛腳的問題,但不知何故我無法弄清楚!
感謝您的幫助!
謝謝!但是我應該從android調用什麼URL作爲HTTP PUT http://192.168.5.3:3000/users/update?user[ip]="+myIp+"user[user_name]="+name?(這裏:id會丟失因爲rake路由說PUT/users /:id)或者我應該添加一個新的路由,以便該ID不需要HTTP PUT? – user1054134
我希望Rails在數據庫中查找IP,如果它找到IP應該使用名稱字符串進行更新,如果不是,它應該創建一個IP和名稱的新記錄,所以PUT會強制我在路由中傳遞一個id,我該怎麼辦? – user1054134
好吧,我想我已經得到了你。通過任何像42一樣的ID--無視爲了忽略錯誤。所以http://192.168.5.3:3000/users/42?user[ip]="+myIp +「&user [name] =」+ name。它現在有效,但更新方法中的一個問題,爲什麼我不能說(at)user = User.find_by_ip(params [:ip]),它每次都會拋出一個零對象。我必須創建一個新用戶來訪問ip字段(at)u = User.new(params [:user]),然後(at)user = User.find_by_ip(@ u.ip)。爲什麼我不能通過params [:ip]直接訪問IP? – user1054134