class User < ActiveResource::Base
self.element_name = "user"
end
次は、//foo.com/user/.jsonの代わりに//foo.com/user.jsonすることがActiveResourceに見えるURLから一つの要素を取得する方法を尋ねるしようとしている
応答で
User.find(:one, :from => "https://foo.com/user.json?username=#{<USERNAME>}"
編集は私が)(検索を使用したいすべての単一の時間を、要求の完全なURLを入力せずにこれを行う方法はあり
コメントするには?
1つの方法は、完全なURLを行うためのクラス内のメソッドを定義することです。
class User < ActiveResource::Base
self.element_name = "user"
def self.find_by_username(username)
find(:one, :from => "https://foo.com/user.json?username=#{username}"
end
def find
self.class.find(:one, :from => "https://foo.com/user.json?username=#{username}"
end
end
もう1つの方法は、element_pathを再定義することです。
class User < ActiveResource::Base
self.element_name = "user"
def self.element_path(id, prefix_options = {}, options = {})
"https://foo.com/user.json?username=#{prefix_options["user_id"]}"
end
end
このサルパッチは、オブジェクト指向プログラミングと呼ばれるものもあれば、オブジェクト指向プログラミングと呼ばれるものもあります。 Rubyの動的性質を利用して基本動作を変更する場合には、猿のパッチを当てるだけで、これはオブジェクト指向プログラミングではまったく正当な方法です。しかし、RubyコミュニティはOOPをほとんど使用せず、継承をかなり無視しています。多少緩い(あまりうまく動作しない)ミックスイン、多型のためのダックタイピングしか使用しません。
ActiveResource規約を受け入れるようにWebサービスを再定義できないURLを構築するためにActiveResourceを混乱させなければならない問題は、多くの人がHTTPartyを代わりに使用している理由です。 「あなたはURLを構築する必要がある場合は、同様HTTPartyを使用する場合があります。」
は、方法はありますfind()を使用したい毎回要求の完全なURLを入力することなくこれを行うには? –
あなたはそれを求めました。回答が編集されました。 –
'site'と' prefix'を使ってURLの最初の部分を構成することもできます。 – funwhilelost