Ich habe zwei Modelle:Schienenverknüpfung mit extrahiertem Jahr aus Spalte "Datum" als Fremdschlüssel?
class Person < ActiveRecord::Base
# birthday: date
end
class BirthYear < ActiveRecord::Base
# year: int
# people_count: int
end
Gibt es eine Möglichkeit zur Gründung einer Assoziation zwischen year
in Geburtsjahr und date
in Person zu schaffen? Mein Ziel ist es, zu verfolgen, wie viele people
in einem bestimmten Jahr geboren wurden, und zu verfolgen, wenn sich diese Zahl ändert.
Ich mag im Grunde date
als Primärschlüssel mit der SQL-Bedingung verwenden, dass:
extract(year from people.birthday) = birth_year.year
EDIT: Anmerkung Ich mag einen counter_cache wenn möglich verwenden, weshalb ich dachte über einen separaten Modell. Ich möchte vermeiden, die Aufzeichnungen mit extract
jedes Mal zu zählen, wenn ich den Zählwert verwende.
Ich sehe. Das einzige Problem (und es tut mir leid, das nicht zu erwähnen) ist, dass ich gerne einen counter_cache verwenden würde, um zu vermeiden, dass jedes Mal per SQL gezählt werden muss. Hast du eine Idee, wie das geht? – etdev
Sie könnten * konditionellen counter_cache verwenden (http://douglasfshearer.com/2006/10/06/custom-counter-cache-with-conditions.html), aber zwei Modelle hier reiben mich nur in die falsche Richtung (Art von hässlich). Wenn du 'extract' nicht in deiner Anfrage verwenden willst, teile den Geburtstag in' Tag', 'Monat' und' Jahr' auf, so dass du eine vereinfachte Version haben kannst, in der die Bedingung –