使用ActiveResource,Ruby on Rails,有一种干净的方法来执行以下操作:
我有自己的ActiveResource模型并主持ActiveResource模型,两者都有评论。我想重用两个注释ActiveResource模型。
# ActiveResource wraps HTTP POST Requests to the following
# And then parsess the responses, and then creates instances of my ActiveResource models
POST http://3rd.party.restful.api.com/admin/houses/1/comments
POST http://3rd.party.restful.api.com/admin/houses/1/chairs/3/comments
我只能想到以下几点:
class Comment < ActiveResource::Base
self.site = "http://3rd.party.restful.api.com"
self.prefix = "/admin/:prefix_path/"
end
然后执行以下操作:
comment = Comment.new(:text => "some text", :prefix_path => "houses/1/chairs/3")
请阻止我这样做。
答案 0 :(得分:0)
我想你问的是,你是否可以只使用一个型号来定义每个路线,对吗?
有两种选择:
首先,最简单的方法:只需定义路线两次。
resources :houses do
resources :comments
resources :chairs do
resources :comments
end
end
路径文件并不关心你是否告诉它可以从两个地方到达评论模型,它将基本上按照你的预期工作 - 视图将只存在于'comments'文件夹中。
第二种更复杂的方法是定义你想要嵌套的namespace。然后你最终会得到两个控制器:CommentsController
和Chairs::CommentsContoller
。您可能还会创建两组视图,但您不必(第二个控制器可以简单地显式呈现第一个控制器的视图)。
有关命名空间如何工作的详细说明,您可以看到the answer where I originally learned about it。
对于它的价值,第二种方法很好,因为你可以根据访问方式对模型的呈现方式进行一些小的调整,但是你仍然只在数据库中有一个模型。
祝你好运!我很乐意尝试在评论中回答问题!