0

我有一种情况,一个模型需要有三个外部id。该表具有属于三个模型的信息。Rails活动记录模型关系 - 属于三个模型的一个模型

例如 - 三种模式 - 键盘,鼠标,显示器 现在我有第四个模型的详细信息 - 哪些信息会发生什么样的结果,如keyboard1,mouse1和monitor1。

那么这个应该是什么样的好设计模式呢?

现在,我用的是Detail.find_by_keyboard_id_and_mouse_id_and_monitor_id(keyboard1id,mouse1id,monitor1id)#=> Detail1

这当然不是去一个最好的办法......

回答

1

我不认为你有什么是一个糟糕的设计。可能没有太多的选择来实现这一点,但你应该考虑如何使用它。就个人而言,我不会打电话给模型细节因为它不会告诉你任何有关模型的真实内容。像HardwareConfiguration更明确。可能太冗长,但可以根据自己的喜好缩短到HardwareConfig或Configuration。

这个模型应该有一个id和三个外键。您还应该将数据库索引添加到每个外键字段。

class Detail < ActiveRecord::Base 
    belongs_to :keyboard 
    belongs_to :mouse 
    belongs_to :monitor 
end 

则每个硬件模型将have_many:细节,如:

class Keyboard < ActiveRecord::Base 
    has_many :details 
end 

您可以通过它的ID,或外键的任意组合中查找细节组合。

Detail.find(id) 
Detail.find_all_by_keyboard_id(keyboard_id) 
+0

谢谢...其实我只是从原来的项目发生变化的数据库名称。 我只是想知道的任何模式或最佳实践来处理这个问题。 – rtdp 2011-03-29 13:54:32

相关问题