Ruby on Rails中的ActiveResource使用详解
程序员文章站
2022-07-05 10:42:06
当 http 响应是一个与存在的格式不同的格式时(xml 和 json),需要某些额外的格式解析,创一个你惯用的格式,并在类别中使用它。惯用的格式应当实作下列方法:exte...
当 http 响应是一个与存在的格式不同的格式时(xml 和 json),需要某些额外的格式解析,创一个你惯用的格式,并在类别中使用它。惯用的格式应当实作下列方法:extension, mime_type,
encode 以及 decode。
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) # 数据以新格式编码并返回 end def decode(csv) # 数据以新格式解码并返回 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
如有任何改动网址的需求时,这些方法也可以被覆写。