我正在使用两个模块的rails应用程序。
一个用于customer posts
,另一个用于admin panel
。我创建了我的customer
模块。一旦客户模块完成,我也在考虑为管理员提供相同的模型。
如何有效地为客户和管理模块使用相同的模型。
任何人都可以在此建议我。
答案 0 :(得分:0)
您可以使用相同名称但名称不同的模型。
您可以在模型文件夹中创建模块:
module ModuleName
def self.table_name_prefix
'module_name_'
end
end
然后该模块的模型将在models / module_name目录中,如:
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(单表继承),例如here。