Tengo un usuario que posee muchos teléfonos
tengo aa teléfono que tiene muchos resúmenes de llamadas
por lo tanto mi usuario tiene muchos resúmenes de llamadasrubí en los carriles método no definido para la matriz
Ahora que el código que tengo:
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
Me gustaría generar un informe que muestre todos los resúmenes de llamadas para los teléfonos que pertenecen a ese determinado usuario. Entro en el controlador y este es mi código de allí:
def index
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.call_summaries.find(:all)
end
Pero esto vuelve este error:
undefined method `call_summaries' for #Array:0x476d2d0
sería muy apreciado Cualquier ayuda.
Ah esto funcionó, gracias. Solo una cosa más, configuré una clave foránea en call_summaries porque los nombres de las columnas son diferentes. Y tampoco estoy buscando la columna phones.id. Estoy buscando una llave hexagonal generada. Este es el SQL que se genera desde el comando correcto con una clave externa:. call_summaries SELECT * FROM call_summaries INNER JOIN celulares en call_summaries.reported_by = phones.id DONDE phones.user_id = 1 Debe ser phones.hex_key en lugar de phones.id. Cómo cambio eso, probé las llaves foráneas, pero a menos que hiciera algo tonto, eso no funcionó. ¡Gracias de nuevo! – Ryan
Parece que necesitará usar las opciones: foreign_key y: primary_key en ambos extremos de la asociación. En CallSummary, por ejemplo, intente 'belongs_to: phone,: foreign_key =>: reported_by,: primary_key =>: hex_key' (y haga lo mismo para la asociación has_many en Phone). –