模型和控制器不同的命名空间,实现脚手架

Posted

技术标签:

【中文标题】模型和控制器不同的命名空间,实现脚手架【英文标题】:model and controller different namespace , achieve scaffolding 【发布时间】:2013-11-24 18:13:22 【问题描述】:

需要一些关于如何实现的提示。

通常我们会为脚手架这样做:

rails g scaffold User email:string password_hash:string password_salt:string (and exit)

但是,由于我想实现的目标的复杂性,因此如下:

Admin 用户,其中“Admin”是命名空间

rails g scaffold Admin::User email:string password_hash:string password_salt:string (and etc)

项目,其中“应用程序”是命名空间。 Items 是一个模型,可以被不同的命名空间访问。

rails g scaffold Application::Item name:string cost:float quantity:integer

所以,显然“Admin”命名空间是供管理员登录并管理项目的。

但是,我正在创建 rails 应用程序,以便我可以为不同的应用程序多次登录,例如 命名空间(再次) - 应用程序1 - 应用2

所以你会期望每个应用程序的主页分别如下:

http://my.railsapp.com/application1/index
http://my.railsapp.com/application2/index

但是,我想实现脚手架,因此 Application::Item 可以在 Application1::Item 等任何命名空间中使用。

示例在我的控制器中(application_a/items_controller)

@items = Application1::Item.all

在我看来,就像铁轨脚手架

...
 <% @items.each do |item| %>
  <tr>
    <td><%= item.email %></td>
    <td><%= link_to 'Show', item %></td>
    <td><%= link_to 'Edit', edit_application1_item_path(item) %></td>
    <td><%= link_to 'Destroy', item, method: :delete, data:  confirm: 'Are you sure?'  %></td>
  </tr>
<% end %>
...

解释我的理由。我希望管理员创建和编辑项目的任何字段。 Application1 编辑成本或数量 最后 Application2 只更新数量。 当然,更多的只是限制,简单来说就是不同的应用在同一个数据模型上使用。

谢谢。

【问题讨论】:

【参考方案1】:

脚手架适用于最常见的情况。如果它不能满足您的定制需求,那就不要使用它,单独创建模型和控制器。无需浪费时间去挖掘它。

【讨论】:

以上是关于模型和控制器不同的命名空间,实现脚手架的主要内容,如果未能解决你的问题,请参考以下文章

处理命名空间中的命名空间模型(类)

PHP的'命名空间:控制器或控制器,模型还是模型?

如何将命名空间添加到我的 T4 脚手架?

ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,

将控制器/模型/基本上所有内容添加到自己的命名空间有啥好处?

.Net 核心版本控制:文件夹结构/命名空间