模型和控制器不同的命名空间,实现脚手架
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】:脚手架适用于最常见的情况。如果它不能满足您的定制需求,那就不要使用它,单独创建模型和控制器。无需浪费时间去挖掘它。
【讨论】:
以上是关于模型和控制器不同的命名空间,实现脚手架的主要内容,如果未能解决你的问题,请参考以下文章
ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,