Mehrere eins zu vielen Beziehungen die gleichen zwei Tabellen in Ruby on Rails verwenden?
-
20-09-2019 - |
Frage
Ich habe eine Datenbank mit 2 Tabellen haben; Benutzer und Revisionen. Revisionen mehrere Eins-zu-viele Beziehungen zu der Benutzer-Tabelle hat, zum Beispiel created_by, verified_by, published_by (jedes Feld eines Fremdschlüssel Benutzer-ID ist).
Wie würde ich mich über die Definition diese Beziehung in meinen Rails-Modellen?
Lösung
class Revision < ActiveRecord::Base
belongs_to :creator, :foreign_key => "created_by", :class_name => "User"
belongs_to :verifier, :foreign_key => "verified_by", :class_name => "User"
belongs_to :publisher, :foreign_key => "published_by", :class_name => "User"
end
class User < ActiveRecord::Base
has_many :creations, :foreign_key => "created_by", :class_name => "Revision"
has_many :verifications, :foreign_key => "verified_by",
:class_name => "Revision"
has_many :publications, :foreign_key => "published_by",
:class_name => "Revision"
end
Mit Hilfe dieser Modelle:
User.first.creations #=> [#<Revision>, #<Revision>, ...]
Revision.first.creator #=> #<User>
# ...etc., for verifier/verifications and publisher/publications.
Sie sollten wahrscheinlich die Vereinsnamen ändern, was auch immer am meisten Sinn in Ihrer Anwendung macht.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow