使用多个控制器进行单表继承?

时间:2017-02-14 02:11:07

标签: ruby-on-rails ruby

我正在开展一个相对简单的个人项目,并决定使用STI应该能够很好地满足我的需求。这是我第一次使用STI,我想知道是否建议为从父模型继承的每个模型使用单独的控制器?

我觉得答案取决于用例,那么我应该问自己什么问题才能得出使用单独控制器或只使用一个控制器的结论?

2 个答案:

答案 0 :(得分:0)

在定义控制器时,您可以使用与STI模型相同的层次结构。

假设您有users表格,User ActiveRecord模型用STI模型表示它:Admin(类型:'管理员')和Member(类型:'成员“)。试试这个:

<强>模型:

app/models
├── user.rb
├── admin.rb
└── member.rb

class User < ActiveRecord::Base
end

class Admin < User
end

class Member < User
end

<强>控制器:

app/controllers
├── users_controller.rb
├── admins_controller.rb
└── members_controller.rb

class UsersController < ApplicationController
end

class AdminsController < UsersController
end

class MembersController < UsersController
end

答案 1 :(得分:0)

控制器为外部世界提供“接口”。所以它应该匹配所需的访问。

单个控制器(用于用户管理)的示例将是具有子模型Teacher,Student,Admin的父用户模型。在这种情况下,所有3个孩子可能会以相同的方式进行CRUD,视图略有不同,因此单个控制器将起作用。

如果必须在控制器操作中开始编写一些if this_model ...语句,请考虑使用单独的控制器。