Ho un utente che possiede molti telefoni
Ho aa telefono che ha molti riassunti di chiamata
quindi il mio utente ha molti riassunti di chiamataRuby on Rails metodo non definito per la serie
Ora per il codice che ho:
class User < ActiveRecord::Base
has_many :phones
has_many :call_summaries, :through => :phones
end
class Phone < ActiveRecord::Base
belongs_to :user
has_many :call_summaries
end
class CallSummary < ActiveRecord::Base
belongs_to :phones
end
Vorrei generare un rapporto che mostri tutti i riepiloghi delle chiamate per i telefoni che appartengono a quel determinato utente. Vado nel controller e questo è il mio codice non:
def index
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.call_summaries.find(:all)
end
ma questo è tornando questo errore:
undefined method `call_summaries' for #Array:0x476d2d0
Qualsiasi aiuto sarebbe molto apprezzato.
Ah questo ha funzionato, grazie. Ancora una cosa, ho impostato una chiave esterna in call_summaries perché i nomi delle colonne sono diversi. E non sto neanche cercando la colonna phones.id. Sto cercando una chiave esadecimale generata. Questa è la SQL che viene generato dal comando corretto con una chiave esterna:. call_summaries SELECT * FROM call_summaries INNER JOIN telefoni ON call_summaries.reported_by = phones.id DOVE phones.user_id = 1 Dovrebbe essere phones.hex_key invece di phones.id. Come posso cambiarlo, ho provato le chiavi esterne ma a meno che non abbia fatto qualcosa di stupido, non ha funzionato. Grazie ancora! – Ryan
Sembra che dovrai usare le opzioni: foreign_key e: primary_key su entrambe le estremità dell'associazione. In CallSummary, ad esempio, prova 'appartiene_to: telefono,: foreign_key =>: reported_by,: primary_key =>: hex_key' (e fa la stessa cosa per has_many in Phone). –