Я пытаюсь создать ActiveResource
объекты для трех объектов во внутреннем приложении.Как использовать ActiveResource с настраиваемой схемой URL?
Есть Tag
s, Tagging
s и s Taggable
:
http://tagservice/tags/:tag
http://tagservice/taggings/:id
http://tagservice/taggables/:type/:key
Tag
«s :tag
является URL-закодирован буквенный текст тега. Tagging
's :id
- это автоинкрементное целое число. Taggable
:type
- это строка. Не существует конечного набора типов taggable - служба может поддерживать тегирование чего-либо. Taggable
:key
- это поле идентификатора, которое присваивает услуга для этого типа Taggable
. Это может быть бизнес-ценность, например, имя пользователя 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
? Благодаря!
Помог ли мой ответ? если да, можете ли вы принять его, пожалуйста? :) Если нет - сообщите мне, что вы в конце концов сделали. –