没有模型的RESTful Controller

时间:2014-01-25 17:25:21

标签: ruby-on-rails

我想这样做:

namespace :user do

  namespace :builder do
    resource :general_info, only: [:edit, :update]
    resource :biography, only: [:edit, :update]
  end

  root to: 'profiles#edit_biography'
end

这样我就可以获得那些漂亮的RESTful控制器:

general_info_controller
biography_controller

但创建虚拟builder模型可能是个坏主意。

没有它,这些控制器会出错:

ActiveRecord::Associations::Builder::BiographiesController

2 个答案:

答案 0 :(得分:0)

模型只能由控制器的实现访问,如果控制器设置像@mymodel这样的变量,则可选择访问该模型。宁静来自行为,这是控制器方法的接口:索引,推送,拉动,创建等,无论你想要什么。路由机制非常强大和灵活,您可以自己重新创建“资源”路由的任何便利。

namespace :user do
   namespace :builder do
      get "edit" => "somecontroller#edit"

......有点事。由您决定如何实施编辑实现以及是否需要任何模型取决于您。您还可以控制使用渲染显示的视图。

是的,这违反了rails约定,但是,它们只是在适用时才适用的约定。并非所有问题都符合所有默认值。

请参阅http://guides.rubyonrails.org/routing.html

通常,资源具有映射到数据库的ID。他们会有像

这样的路线
get ":id/edit" => "resourcecontroller#edit"

您的问题需要在多大程度上复制模型资源路径尚不清楚。

答案 1 :(得分:-1)

在我看来,最好的方法是使用模型。我建议你这本书

  

使用Ruby和Rails进行面向服务的设计(Addison-Wesley专业Ruby系列)[平装]   http://www.amazon.com/Service-Oriented-Design-Rails-Addison-Wesley-Professional/dp/0321659368

如果您正在使用RESTful with Database,最佳做法是使用Model来更好地控制数据。