我正在为我的项目设计一个数据库模式,在那里我似乎被一个奇怪的视觉障碍所困扰(从某种意义上说,我之前从未遇到过这个问题,因为它实际上太容易解决了,除了这个特殊情况 - 对我来说)
我有一个实体homes
,可以有各种facilities
所以,我已经宣布了一个模型:FacilitySet
,它看起来像:
id, home_id, parking, electricity
如您所见,facility_sets
表的每一行对应一个Home。
但是,在我看来,如果我能说:一个家庭有很多设施,而不是一个家庭has_one facility_set,那对我来说会更有意义。这也提供了一个优点,我可以简单地说:@ home.facilities,而不是@ home.facility_set
真正的问题是我无法理解如何构建数据库中的facilities
表,以便我可以简单地声明:
class Home << ActiveRecord::Base
has_many :facilities
..
end
和访问设施,例如:@home.facilities
我现在正在做:
class Home << ActiveRecord::Base
has_one :facility_set
..
end
和访问设施,如:@home.facility_set
,这让我觉得我做的事情可怕! :〜)
在这里的清晨,我真的非常感谢ray-of-ho(m)e
对我来说。
此致
答案 0 :(得分:1)
class InitSchema < ActiveRecord::Migration
def change
create_table :homes do |t|
t.integer :id, null: false
# ...
end
create_table :facilities do |t|
t.integer :id, null: false
t.integer :home_id, null: false
t.string :name, null: false
t.string :value, null: false
end
end
end
class Home < ActiveRecord::Base
has_many :facilities
end
class Facility < ActiveRecord::Base
belongs_to :home
end
现在使用设施名称和值字段来存储停车,电力等等。您可能想要创建一个具有设施的FacilityType类,并在那里保留停车,电力等。