1. ホーム
  2. スクリプト・コラム
  3. ルビートピックス

Ruby on RailsのActiveResourceの使い方解説

2022-02-03 10:10:56

HTTPレスポンスが存在しない形式(XMLやJSON)の場合、自分が使いやすい形式を作り、それをカテゴリで使用するためには、いくつかの追加フォーマットパースが必要です。通常のフォーマットは、extension, mime_typeのように実装する必要があります。
    エンコード、デコードを行う。

module ActiveResource
   module Formats
    module Extend
     module CSVFormat
      extend self

      def extension
       'csv'
      end

      def mime_type
       'text/csv'
      end

      def encode(hash, options = nil)
       # Encode the data in the new format and return it
      end

      def decode(csv)
       # Decode the data in the new format and return it
      end
     end
    end
   end
  end

  class User < ActiveResource::Base
   self.format = ActiveResource::Formats::Extend::CSVFormat

   ...
  end



    HTTPリクエストを拡張なしで送信すべき場合、ActiveResource::Baseのelement_pathおよびcollection_pathメソッドをオーバーライドし、拡張を削除します。

  class User < ActiveResource::Base
   ...

   def self.collection_path(prefix_options = {}, query_options = nil)
    prefix_options, query_options = split_options(prefix_options) if query_options.nil?
    "#{prefix(prefix_options)}#{collection_name}#{query_string(query_options)}"
   end

   def self.element_path(id, prefix_options = {}, query_options = nil)
    prefix_options, query_options = split_options(prefix_options) if query_options.nil?
    "#{prefix(prefix_options)}#{collection_name}/#{URI.parser.escape id.to_s}#{query_string(query_options)}"
   end
  end



    これらのメソッドは、URLを変更する必要がある場合にもオーバーライドすることができます。