Ruby onRailsv3.2.2を使用しています。次のモデルクラスがあります
class Country < ActiveRecord::Base
has_many :regions, :foreign_key => 'country_id'
end
class Region < ActiveRecord::Base
belongs_to :country, :foreign_key => 'country_id'
has_many :cities, :foreign_key => 'region_id'
end
class City < ActiveRecord::Base
belongs_to :region, :foreign_key => 'region_id'
end
と私は作りたいCity
belongs_to :country
です。
これを行う最も簡単な方法は、country_id
データベーステーブルの列をデータベーステーブルに追加し、City
関連するActiveRecordアソシエーションを次のように記述することです。
class Country < ActiveRecord::Base
# ...
has_many :cities, :foreign_key => 'country_id'
end
class City < ActiveRecord::Base
# ...
belongs_to :country, :foreign_key => 'country_id'
end
ただし、データベースデータを少なくするために、都市は国に属する地域に属しているため(これは、都市が国に属していることを意味します)、Region
テーブルにすでに保存されているデータを「使用」することもできます。、この場合、ActiveRecordアソシエーションを適切に記述して、モデルクラスを「介して」暗黙的に存在する言及された関係情報を「活用」する方法がわかりません。City
Country
Region
どうすればいいですか?
注:国に存在する都市をカウントするためにRoR機能(アソシエーションでのみ使用可能)を使用したいのでbelongs_to :country
、モデルクラスでActiveRecordアソシエーションを指定することを「強制」しています。City
:counter_cache
belongs_to