需要一些关于如何实现的提示。
通常我们会为脚手架这样做:
rails g scaffold User email:string password_hash:string password_salt:string (and exit)
但是,由于我想要实现的目标的复杂性,因此如下:
管理员用户,其中“Admin”是命名空间
rails g scaffold Admin::User email:string password_hash:string password_salt:string (and etc)
项目,其中“应用程序”是命名空间。Items 是一个模型,可以被不同的命名空间访问。
rails g 脚手架 Application::Item name:string cost:float 数量:integer
因此,显然“Admin”命名空间用于管理员登录,他们可以管理项目。
但是,我正在创建 rails 应用程序,以便我可以为不同的应用程序(例如命名空间(再次)-Application1-Application2)多次登录
所以你会期望每个应用程序的主页分别如下:
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 仅更新数量。当然,它更多的是限制,但简单地说就是不同的应用程序在同一个数据模型上使用。
谢谢。