【问题标题】: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 只更新数量。 当然,更多的只是限制,简单来说就是不同的应用在同一个数据模型上使用。

谢谢。

【问题讨论】:

    标签: ruby-on-rails model controller namespaces scaffold


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2010-10-28
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2011-03-03
      • 2014-06-30
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多