2009-05-16 16 views
1

内部アプリケーションの3つのオブジェクトのオブジェクトをActiveResourceに作成しようとしています。カスタムURLスキームでActiveResourceを使用するにはどうすればよいですか?

Tag秒、Tagging秒、およびTaggable秒あります

http://tagservice/tags/:tag 
http://tagservice/taggings/:id 
http://tagservice/taggables/:type/:key 

Tag:tagは、URLエンコードされたリテラルタグテキストです。 Tagging:idは、自動インクリメントされた整数です。 Taggable:typeは文字列です。タグ付け可能なタイプの有限集合はありません。サービスはタグ付けをサポートできます。 Taggable:keyは、そのTaggableのタイプのサービスが割り当てるIDフィールドです。 emplyeeのユーザー名のようなビジネス上の価値でも、単に自動増分された整数でもかまいません。

これらはActiveRecordオブジェクトだったら、私は彼らにこのような何かコーディングしたい:

class Tag < ActiveRecord::Base 
    has_many :taggings 
    has_many :taggables, :through => :taggings 
    def self.find_by_id(id) 
    find_by_name(id) 
    end 
    def to_param 
    CGI::escape(self.name) 
    end 
end 

class Tagging < ActiveRecord::Base 
    belongs_to :tag 
    belongs_to :taggable 
end 

class Taggable < ActiveRecord::Base 
    has_many :taggings 
    has_mnay :tags, :through => :taggings 
    def self.find_by_id(id) 
    find_by_type_and_key(*id.split('/')) 
    end 
    def to_param 
    "#{self.type}/#{self.key}" 
    end 
end 

、誰もがそれらのクラスがActiveResourceに似たいものを知っていますか?ありがとう!

+0

私の回答は役に立ちましたか?もしそうなら、あなたはそれを受け入れることができますか? :)もしあなたが最終的に何をしたのか教えてください。 –

答えて

1

Rails 3.0を使用していますか?そうであれば、ActiveResourceではまったく同じことを今ほとんど行うことができます。

ない場合は、非常に活発な資源をしようと考えてみましょう。私はActive Recordのとほぼ同じActiveResourceを動作させるために拡張 http://github.com/taryneast/hyperactiveresource

。 これは、ARと同じようにアソシエーションをサポートしていますが、「スルー」をサポートしていませんが、has_many:foos、:through =>:barのハンドブックが必要です。

# ugly, but does the job 
def foos 
    return [] unless bars.present? 
    foo_set = [] 
    self.bars.each {|b| foo_set += b.foos } 
    foo_set 
end 
関連する問題