1

我正在为我的项目设计一个数据库模式,我似乎被一个奇怪的视觉障碍所困(从某种意义上说,我以前从未遇到过这个问题,因为它几乎太容易解决,除非在这种特殊情况下 -为了我)

我有一个实体homes,可以有各种facilities
所以,我已经声明了一个模型:FacilitySet它看起来像:

id, home_id, parking, electricity  

如您所见,facility_sets表格的每一行对应一个 Home。

但是,在我看来,如果我可以说:a home has_many facility,而不是 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我。

问候

4

1 回答 1

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 类,并在其中保留停车、电力等。

于 2012-09-26T00:55:24.237 回答