In meiner Anwendung kann ich mehrere Konten haben und Konten können mehrere E-Mails haben. Ich habe eine Methode, die alle einzigartigen E-Mails von jedem Konto zählt, aber das ist nicht was ich will.So erhalten Sie mehrere Werte eines Datensatzes mit Karte
Stattdessen möchte ich alle die eindeutige E-Mail von nur einem Konto NICHT alle, wie die Methode gerade tut.
Hier ist meine aktuelle Methode:
class AccountEmails
def self.count
accounts = Account.all
alert = accounts.map do |a|
a.users.first.alert_email.split(",")
end
billing = accounts.map do |a|
a.users.first.billing_email.split(",")
end
user = accounts.map do |a|
a.users.first.email.split(",")
end
snitch = accounts.map do |a|
a.snitches.map { |s| s.alert_email.split(",") }
end
[alert, billing, user, snitch].flatten.uniq.count
end
end
Dies wird wieder die ganze E-Mail, die von allen Konten einzigartig ist. Ich möchte alle eindeutigen E-Mails für jedes Konto zurückgeben, sodass Konto 1 vier eindeutige E-Mails enthalten kann und Konto 2 fünf eindeutige E-Mails enthalten kann.
Verwendung Gruppe von http://guides.rubyonrails.org/active_record_querying.html#total-of-grouped-items –
(1) Was tut die Daten sehen aus wie in der Datenbank? Tabellenschema, Beziehungen, ... (2) Speichern Sie wirklich kommagetrennte Listen von E-Mail-Adressen in einem einzigen Feld? Wenn Sie es sind, ist der erste Schritt, damit aufzuhören, diese Art von Anti-Muster wird Ihr Leben einfach miserabel machen. –
Bitte lesen Sie "[mcve]". Wir benötigen die minimalen Eingabedaten und Ihre erwartete Ausgabe. Ohne das müssen wir die Daten zurückentwickeln und dann raten, ob die Ausgabe korrekt ist, was unsere Zeit verschwendet. –