0

Rails アプリで PUT リクエストを介してモデルを更新したいと考えています。それを行う最善の方法は何ですか?

基本的に私は持っています:

def method
  ...
  @relation = Relation.find(34)
  @relation.name = "new_name"
  @relation.save
end

これにより、SQLite でエラーが発生します (「トランザクション内でトランザクションを開始できません」)。

put/post に切り替えると、問題は解決すると思います..それを行う正しい方法は何ですか?

4

1 に答える 1

2

それでしばらくして、私は実際に解決策を見つけました。これは、PUTを介してリレーションモデルを更新するResqueワーカーのコードです。このメソッドを使用すると、SQLiteビジー例外エラーは発生しません。

class VideoCollector
  def self.perform(rel_id)
    @relation = Relation.find_by_id(rel_id)
    @url = Rails.application.routes.url_helpers.relation_url(@relation)
    @uri = URI(@url)
    @body ={"collected" => "true"}.to_json
    request = Net::HTTP::Put.new(@uri.path, initheader = {'Content-Type' =>'application/json'})
    request.body = @body
    response = Net::HTTP.new(@uri.host, @uri.port).start {|http| http.request(request) }
  end
end

多分それは誰かに役立つでしょう。

于 2012-05-28T16:29:18.827 に答える