2014-07-22 12 views
6

Jestem nowy na szynach/rubin i zastanawiałem się, w jaki sposób można dokładnie sprawdzić, czy mój schemat bazy danych jest prawidłowo zbudowany w konsoli szynSzyny konsoli schematu bazy danych sprawdzanie

W rails c

ActiveRecord::Base.connection.tables dał mi wyjście z

["schema_migrations", "users", "expense_pictures", "income_pictures", "income_texts", "expense_texts"] 

Jak mogę sprawdzić w konsoli, czy mam poprawnie zbudowany następujący schemat?

enter image description here

od użytkownika do IncomePictures i ExpensePictures są klucze obce. IncomePictures do ExpensePictures są również klucze obce do odpowiednich tekstów

Oto moje modele:

class ExpensePicture < ActiveRecord::Base 

    belongs_to :user 
    mount_uploader :image, ImageUploader 
    has_one :expense_text 
end 

class ExpenseText < ActiveRecord::Base 
    belongs_to :expense_pictures 
end 

class IncomePicture < ActiveRecord::Base 
    belongs_to :user 
    mount_uploader :image, ImageUploader 
    has_one :income_text 
end 

class IncomeText < ActiveRecord::Base 
    belongs_to :income_pictures 
end 

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :rememberable, :validatable 

    has_many :expense_pictures 
    has_many :income_pictures 

end 

Odpowiedz

7

Można to sprawdzić w db/schema.rb pliku. Jeśli nie masz pewności, możesz uruchomić wcześniej bundle exec rake db:schema:dump - to zadanie rake odtwarza plik schema.rb z bazy danych.

Według edytowanym pytanie, należy generować następujące migracje:

bundle exec rails g migration add_user_id_to_expense_pictures user:references 
bundle exec rails g migration add_expense_picture_id_to_expense_texts expense_picture:references 
bundle exec rails g migration add_user_id_to_income_pictures user:references 
bundle exec rails g migration add_income_picture_id_to_income_texts income_picture:references 

i uruchomić je z bundle exec rake db:migrate.

również niektóre ustawienia skojarzone są niepoprawnie. Powinno być:

class ExpenseText < ActiveRecord::Base 
    belongs_to :expense_picture 
end 

i

class IncomeText < ActiveRecord::Base 
    belongs_to :income_picture 
end 
+0

Jestem całkiem nowy i czuję się trochę zagubiony ze wszystkim Ta migracja i magia, którą wykonują migracje rake'u. Obecnie to robię. Czuję się tak, jakby brakowało mi czegoś http://dpaste.com/2TKPYPK – Liondancer

+0

@Liondancer, więc twój obecny schemat bazy danych nie jest tym, czego oczekujesz? –

+0

Umm im jsut nie jest pewien, czy połączenia z kluczem obcym są wykonane – Liondancer

0

Myślę, że można wizualizować Rails schema.rb przez niektórych narzędzi wymienionych w this link

Powiązane problemy