Dopo aver letto: thisActiveRecord - come ottenere tutte le colonne di tabelle unite
io ancora non capisco. in console:
puts Category.joins(:posts)
Esegue join o left join su Category e Post.
Tuttavia, tutti i dati restituiti sono solo colonne nella tabella di categoria. Come ottenere anche i dati di colonna in Post. ?
devo fare un altro modello per raggiungere questo obiettivo?
dopo la lettura: this Is find_by_SQL è l'unico modo? Voglio ActiveRecord se possibile.
Grazie.
Dovresti essere più specifico su ciò che cerchi di ottenere. Se si desidera "il modo Active Record", non si dovrebbe nemmeno parlare di "colonne" perché si manipolano gli oggetti, non le tabelle. Se hai davvero bisogno dei dati grezzi, puoi usare 'ActiveRecord :: Base.connection.select_all ('SELECT ...')', questo ti restituirà un array di hash (nessuna istanza del modello). [La documentazione è qui] (http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-select_all) –
grazie, sto usando in questo modo la società: ActiveRecord :: Base.connection .select_all (Category.joins (: posts) .to_sql)), è così troppo brutto? –
Nessun problema. Tuttavia, se si vuole veramente lavorare in modo ORM, si dovrebbe usare solo questo tipo di trucchi per query SQL davvero complesse. Per un problema così insignificante, utilizzerei invece la soluzione di @ abhishek + 'includes'. Perché preoccuparsi di utilizzare un ORM se non si esegue il codice in modalità OO? –