【发布时间】:2015-08-06 19:51:59
【问题描述】:
所以我继承了一些我需要添加到的 Rails 4 代码和数据库模型。
名为mpb_item 的模型有一个名为mpb_items 的表。
在这个项目表里面有如下列:
role1_start_date, role2_start_date, role3_start_date, role4_start_date
不理想,但就是这样。我猜他们应该在一个单独的角色表中。
我需要添加功能以暂停这些角色中的任何一个(或所有角色)。
我想我可以:
对于现有的表,我可以为每个现有的角色列添加一个新的布尔列。例如
role1_suspended、role2_suspended等创建名为
mpb_suspensions的表,包含 2 列:mpb_item_id和role_name。由于角色本身没有 id,因此 role_name 列将存储“role1”或“role2”等,具体取决于哪个角色被暂停。
在我的View 中,我需要能够“暂停”每项工作或所有工作。我不确定模型代码会如何执行此操作以及哪种方法最好。
【问题讨论】:
-
您可以发布模型及其关联吗?你说的设计是什么意思?您需要带有 Rails 的 RDB(SQLite3、MySQL、PostgreSQL,最后一个是最强大的,具有大量数据)。当你说继承时,你的意思是你正在接受遗留代码或其他人的项目?
-
有什么原因你不能创建合适的角色模型(哈哈)并在迁移中从
mpb_item表中迁移数据? -
别人的项目已经有一年左右的时间了。我不确定我们是否可以从 mpb_item 中提取数据,因为这样会为每个角色生成一个新行,这将如何工作?写'mpb_item.role.suspend'就好了,因为我刚刚在家,所以暂时无法发布代码...
-
如果我们将角色拉到它自己的表中,那么在当前的 mpb_items 表中,mpb_items.id 将不再是唯一的,因为会有几行(由于 role_id)。目前每行只有一个 mpb_item。
标签: ruby-on-rails