Ich benutze Rails 5.0 mit Postgresql 9.5Wie fügen Sie zusammengesetzte Primärschlüssel in db mit Rails?
Ich bin zu meinem Modell 'User_achievement' hinzufügen Composite Primärschlüssel hinzufügen (um 'Benutzer' und 'Achievement' Modelle zu verknüpfen, wie Sie erraten können).
Also habe ich versucht, die "composite_primary_keys" gem. Ich habe alle Anweisungen befolgt, trotzdem war das Ergebnis nicht so, wie ich es erwartet hatte.
test1_development=> \d user_achievements
Table "public.user_achievements"
Column | Type | Modifiers
----------------+---------+-----------
user_id | integer |
achievement_id | integer |
uach_date | date |
Indexes:
"index_user_achievements_on_achievement_id" btree (achievement_id)
"index_user_achievements_on_user_id" btree (user_id)
Foreign-key constraints:
"fk_rails_4efde02858" FOREIGN KEY (user_id) REFERENCES users(id)
"fk_rails_c44f5b3b25" FOREIGN KEY (achievement_id) REFERENCES achievements(id)
Ist hier Modelle und Code Migrationen: Scheint, wie es pTaste in der ‚user_achievement‘ Tabelle nicht durch psql Werkzeug gemäß der Info erstellen
class CreateUsers < ActiveRecord::Migration[5.0]
def change
create_table :users do |t|
t.string :name
end
end
end
class CreateAchievements < ActiveRecord::Migration[5.0]
def change
create_table :achievements do |t|
t.string :ach_name
t.text :ach_desc
end
end
end
class CreateUserAchievements < ActiveRecord::Migration[5.0]
def change
create_table :user_achievements, id: false do |t|
t.belongs_to :user, :foreign_key => [:id]
t.belongs_to :achievement, :foreign_key => [:id]
t.date :uach_date
end
end
end
class Achievement < ApplicationRecord
has_many :user_achievements
end
class User < ApplicationRecord
has_many :user_achievements
end
class UserAchievement < ApplicationRecord
self.primary_keys = :user_id, :achievement_id
belongs_to :user, :foreign_key => [:id]
belongs_to :achievement, :foreign_key => [:id]
end
sollte also das Juwel ändern DB-Tabellen? oder es beeinflusst nur die Umgebung der Schienen? Gibt es die einzige Möglichkeit, db zu ändern - Zeile in Migration hinzufügen?