0

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

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

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 仅更新数量。当然,它更多的是限制,但简单地说就是不同的应用程序在同一个数据模型上使用。

谢谢。

4

1 回答 1

0

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

于 2013-11-12T14:36:47.407 回答