Die DB Beziehung mit:Optimieren einer Abfrage in Schienen Modelle aktiven Datensatz Schienen
Class User < ActiveRecord::Base
has_many :user_messages
has_many :messages
end
Class UserMessage < ActiveRecord::Base
belongs_to :user
belongs_to :message
end
Class Message < ActiveRecord::Base
belongs_to :user
has_many :user_messages
end
Ich möchte den folgenden Code optimieren:
ids.each do |id|
user = User.find_by_id(id)
unread_count = user.user_messages.where(:folder => user.inbox_id, :read => false).count
puts "UserID #{id} ---- Unread Message count #{unread_count}"
end
Können einige mir sagen, wie kann ich den obigen Code optimieren Verwenden von Active Record oder SQL Query. Im Grunde möchte ich DB-Abfragen und Zeit reduzieren, die der obige Code braucht, um die Schleife abzuschließen.
Vielen Dank im Voraus.
Klingt wie ein Job für eine linke mit einer Gruppe beitreten durch und zählen. Hast du versucht, ein grundlegendes Tutorial zu SQL zu machen? – Shadow
sollten Sie eine 'unread_count' Spalte in' user' Tabelle speichern, um 'unread_count' für jeden Benutzer zu speichern. – Thanh
Thanh Ich kann die Unread_Count in Benutzertabellen speichern, da ich Massendaten in die Tabelle user_messages mit dieser Model.import-Methode einfüge. – user1969191