我正在使用带有两个模块的 rails 应用程序。
一个是为了customer posts
,另一个是为了admin panel
。我已经创建了我的customer
模块。客户模块完成后,我也在考虑为管理员使用相同的模型。
我如何有效地为客户和管理模块使用相同的模型。
任何人都可以在这方面建议我。
我正在使用带有两个模块的 rails 应用程序。
一个是为了customer posts
,另一个是为了admin panel
。我已经创建了我的customer
模块。客户模块完成后,我也在考虑为管理员使用相同的模型。
我如何有效地为客户和管理模块使用相同的模型。
任何人都可以在这方面建议我。
您可以拥有具有相同名称但位于不同命名空间中的模型。
您可以在模型文件夹中创建模块:
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(单表继承)。