0

我正在使用带有两个模块的 rails 应用程序。

一个是为了customer posts,另一个是为了admin panel。我已经创建了我的customer模块。客户模块完成后,我也在考虑为管理员使用相同的模型。

我如何有效地为客户和管理模块使用相同的模型。

任何人都可以在这方面建议我。

4

1 回答 1

0

您可以拥有具有相同名称但位于不同命名空间中的模型。

您可以在模型文件夹中创建模块:

module ModuleName
  def self.table_name_prefix
    'module_name_'
  end
end

然后该模块的模型将位于模型/模块名称目录中,例如:

class ModuleName::ModelName < ActiveRecord::Base
  # attr_accessible :attr1, :attr2
end

你的迁移应该是这样的:

class CreateModuleNameModelNames < ActiveRecord::Migration
  def change
    create_table :module_name_model_names do |t|    
      t.timestamps
    end
  end
end

如果您想为不同的应用程序模块使用相同的模型名称,我认为这是相当明确的解决方案。

试试rails g module_name/model_name- 它会建议你模型命名空间的结构。

还可以在此处查找 STI(单表继承)。

于 2013-10-02T09:11:00.603 回答