Ich verwende Rails 5.0.1 für Web-Entwicklung und die Bereitstellung meiner App auf Heroku. Ich benutze postgreSQL als meine Datenbank.Wie ein Verweis auf Primärschlüssel der gleichen Tabelle zweimal in einer Tabelle in Postgre in Rails5
Ich habe eine Tabelle namens Benutzer und eine Tabelle namens Friends. In Freundes-Tabelle Ich möchte die Benutzer-ID zweimal speichern, zum Beispiel um anzuzeigen, dass Benutzer-ID 1 ist Freund der Benutzer-ID 2.
Wie kann ich das tun?
Bisher habe ich versucht, folgende Dinge ohne Erfolg:
Versuch 1:
Migrationsdatei:
create_table :friends do |t|
t.references :user, foreign_key: true
t.references :user, foreign_key: true
t.timestamps
end
Modell:
class Friend < ApplicationRecord
belongs_to :friend1, :foreign_key => :friend1_id, :class_name => 'User'
belongs_to :friend2, :foreign_key => :friend2_id, :class_name => 'User'
end
Versuch 2 :
Migrationsdatei:
create_table :friends do |t|
t.references :friend1_id, foreign_key: true
t.references :friend2_id, foreign_key: true
t.timestamps
end
Modell:
class Friend < ApplicationRecord
belongs_to :friend1, :foreign_key => :user_id, :class_name => 'User'
belongs_to :friend2, :foreign_key => :user_id, :class_name => 'User'
end
Gibt es etwas falsch mit der Art, wie ich es bin Modellierung? oder, kann dies besser/einfacher gemacht werden? Meine Anforderung ist es, Informationen über einen Benutzer und seine Freunde zu speichern. Ein Benutzer kann mehrere Freunde haben.
PS: Vor der Bereitstellung auf Heroku/PostgreSQL, habe ich die Anwendung auf meinem lokalen System mit sqlite3 ausgeführt, die Skripte schienen dort gut zu funktionieren, aber sie funktionieren jetzt nicht auf Heroku/PostgreSQL.
Warum Sie nicht has_many Beziehung verwenden? Benutzer hat viele Freunde – 1Rhino