User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
Ich muss Datensätze von f_name
bestellen. Wenn f_name
nil
ist, werden Datensätze zum Ende verschoben und per E-Mail bestellt.Ruby on Rails: Bestelldatensätze mit Nullwert
Unten ist die Abfrage,
User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
.where('names.first_name IS NOT NULL')
.order('f_name asc').union(
User.where(id: users_ids)
.joins('LEFT JOIN names ON names.user_id = users.id AND names.primary = 1')
.joins('LEFT JOIN emails ON emails.user_id = users.id AND emails.primary = 1')
.select('users.*, names.first_name AS f_name , emails.email AS primary_email')
.where('names.first_name IS NULL')
.order('primary_email asc'))
Die obige Abfrage nicht funktionieren.
Datenbank - MySql
Wie ist es nicht funktioniert? –
Sorry, ich habe vergessen hinzuzufügen, dass ich die Paginierung '.paginate (page: params [: page]). Per_page (10)' verwende und den Fehler 'undefined method 'paginate' für # ' –
Nicht sicher über Arel :: Nodes :: Union oder wo die Paginat-Methode herkommt. Vielleicht anstelle von ".union", versuchen Sie es mit '||' oder '.oder' (wenn Sie Rails 5 verwenden) –