Proverò a spiegare:Rails include solo le colonne selezionate dalla relazione
Ho una tabella 'Prodotto' e una tabella 'Store'. Sto cercando di ottenere solo il nome del negozio da mostrare sulla pagina, ma ActiveRecord mi sta restituendo tutte le colonne dallo store.
Ecco il codice:
@product = Product
.order(id: :desc)
.includes(:store)
.select("products.id, products.store_id, stores.name")
.limit(1)
La query costruita (da Rails):
Processing by IndexController#index as HTML
Product Load (0.0ms) SELECT products.id, products.store_id FROM `products` ORDER BY `products`.`id` DESC LIMIT 1
Store Load (1.0ms) SELECT `stores`.* FROM `stores` WHERE `stores`.`id` IN (111)
voglio solo mostrare il nome del negozio del prodotto, ma Rails sta selezionando tutte le colonne dei negozi.
I miei modelli:
Product.rb
class Product < ActiveRecord::Base
belongs_to :store, :foreign_key => 'store_id'
end
Store.rb:
class Loja < ActiveRecord::Base
has_many :products
end
Qualsiasi ideia?
L'SQL che hai dato può essere scritto direttamente usando AR. –
Ma con la cotta non sarà più un oggetto, giusto? –
@HonlonAguiar, giusto, restituirà una serie di valori. Questo è uno degli svantaggi di cogliere vs selezionare. –