1

プロジェクトのデータベーススキーマを設計していますが、奇妙なビジョンブロックに悩まされているようです (という意味で、この特定のケースを除いて、事実上解決が簡単すぎるため、これまでこの問題を経験したことはありません -私のため)

homes私はさまざまなエンティティを持つことができますfacilities
だから、私はモデルを宣言しました:FacilitySetそれは次のようになります:

id, home_id, parking, electricity  

ご覧のとおり、テーブルの各行はfacility_setsホームに対応しています。

しかし、私の意見では、家に has_one facility_set というよりも、家には has_many の施設があると言えれば、はるかに理にかなっていると思います。これはまた、@home.facility_set ではなく @home.facilities と簡単に言うことができる利点を提供します。

本当の問題は、データベースでテーブルを構造化する方法を理解できないため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

ここで、施設の名前と値のフィールドを使用して、駐車場、電気などを格納します。has_many 施設を持つ FacilityType クラスを作成し、そこに駐車場、電気などを保持することができます。

于 2012-09-26T00:55:24.237 に答える