Cześć,
długo zwlekałem z założeniem konta tutaj i starałem się samodzielnie walczyć z problemami. Jednak teraz nie wiem kompletenie jak to ruszyć. Aktualnie w mojej aplikacji mam problem z N+1 Count:
w modelu post.rb:
belongs_to :player, counter_cache: true
w modelu player.rb:
has_many :posts
Z tego co rozumiem z dokumentacji przy zastosowaniu metody player.posts.count powinno podać liczbę postów z cache przeglądarki - czyli wykonać się natychmiastowo. Jednak dla każdego playera nadal wykonuje liczenie.
Dodatkowo, przy próbie dodania nowego postu z rails C wyrzuca błąd, że posts_count nie może być pusty
Jeżeli dodasz ręcznie kolumne to migracje Ci jej nie usunął (no chyba że dodasz migracje usuwającą :))
Ktoś inny kto ściągnie projekt nie będzie miał poprostu takiej bazy jak Ty, bo będzie miał stworzoną baze przez migracje (a Ty dodatkowo będziesz miał tą jedną kolumne którą sam dodałeś)
class AddPostsCounterToPlayer < ActiveRecord::Migration
def change
create_table :players do |t|
t.integer :posts_count
t.timestamps null: false
end
end
end
wyrzuca mi błąd:
PG::DuplicateTable: BŁĄD: relacja "players" już istnieje
czy mogę utworzyć nową migrację, czy mam dopisać kolumnę do starej?
def change
add_column :players, :posts_count, :integer
end
Powinno dodać Ci tą kolumne.
Twoja migracja probuje stworzyć tabele z takimi kolumnami - masz już stworzoną taką tabele. Do dodawania kolumn służy “add_column”, do usuwania “remove_column”.
Robiłeś jakiś tutorial już ? Może powinieneś od tutoriali zacząć a nie od własnej aplikacji?