Lassen Sie uns die folgenden Beziehungen (3 Modelle) betrachten:Wird has_many: Durchsetzen enorme Leistungseinbußen in RoR?
class Author < ActiveRecord::Base
has_many :authorships
has_many :papers, :through => :authorships
end
class Paper < ActiveRecord::Base
has_many :authorships, inverse_of: :paper, :dependent => :destroy
has_many :authors, :through => :authorships
accepts_nested_attributes_for :authorships, :allow_destroy => true
end
class Authorship < ActiveRecord::Base
belongs_to :paper
belongs_to :author
validate: rank, presence: true # position of the author
end
Wie Sie sehen können, verwende ich viel has_many
und auch :through
. Wenn ich paper.html.erb
Seite blättern, die im Grunde alle Papiere und die entsprechenden Autoren zeigt, verlangsamt es das System sehr. Im Moment habe ich ungefähr 400 Artikel und 2000 Autorschaften, und es dauert 3 Sekunden, um die Seite zu laden, und aus dem Log sah ich RoR eine Menge von SQL-Abfragen, die Mehrheit der Abfragen sind Autoren abzurufen. Ich habe mich gefragt, das ist eine typische Sache in RoR. Danke für Ihre Hilfe.
Können Sie auch Ihren Controller und Code anzeigen? –