Ich verwende Ruby on Rails v3.2.2. Ich habe folgende Modellklassen
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
y _Ich würde gerne eine City
belongs_to :country
_ .
Ich weiß, dass es am einfachsten ist, wenn man eine country_id
Datenbanktabellenspalte an die City
Datenbanktabelle und den zugehörigen ActiveRecord-Assoziationen zuzuordnen:
class Country < ActiveRecord::Base
# ...
has_many :cities, :foreign_key => 'country_id'
end
class City < ActiveRecord::Base
# ...
belongs_to :country, :foreign_key => 'country_id'
end
Um jedoch zu speichern weniger Datenbankdaten Ich denke, ich kann die bereits in der Datenbank gespeicherten Daten "verwenden Region
Tabelle da eine Stadt zu einer Region gehört, die wiederum zu einem Land gehört (dies impliziert, dass eine Stadt zu einem Land gehört) aber in diesem Fall habe ich keine Ahnung, wie man ActiveRecord-Assoziationen richtig für City
y Country
um so die erwähnten Beziehungsinformationen "auszunutzen", die implizit "durch" die Region
Modellklasse.
Wie soll ich vorgehen?
Note : Ich bin "gezwungen", die belongs_to :country
ActiveRecord-Assoziation in der City
Modellklasse, weil ich den RoR verwenden möchte :counter_cache
Funktion (verfügbar nur pour belongs_to
Verbände), um die in einem Land vorhandenen Städte zu zählen.