您好我是Ruby on Rails的新手,我有一点问题。我正在尝试在csv文件中导出数据 Recibo 模型。但是这个模型模型与 Atencion 模型相关联。 所有 servicio_ids 我需要 Recibo 谢谢!
模型 Recibo
class Recibo < ActiveRecord::Base
attr_accessible :caja_id,
:doctor_id,
:numero_recibo,
:paciente,
:total,
:total_porcentaje_doctor,
:total_porcentaje_clinica,
:total_porcentaje_laboratorio,
:servicio_ids,
:created_at,
:updated_at
belongs_to :caja
belongs_to :doctor
has_many :atencions
has_many :servicios, :through => :atencions
before_save do
servicio_by_id = Servicio.where(:id => servicio_ids)
self.total = servicio_by_id.sum(&:precio)
self.total_porcentaje_doctor = servicio_by_id.sum ('porcentaje_doctor / 100.0 * precio')
self.total_porcentaje_clinica = servicio_by_id.sum ('porcentaje_clinica / 100.0 * precio')
self.total_porcentaje_laboratorio = servicio_by_id.sum ('porcentaje_laboratorio / 100.0 * precio')
end
def self.to_csv
CSV.generate do |csv|
csv << column_names
all.each do |recibo|
csv << recibo.attributes.values_at(*column_names)
end
end
end
def self.import(file)
CSV.foreach(file.path, headers: true) do |row|
recibo = find_by_id(row["id"]) || new
recibo.attributes = row.to_hash.slice(*accessible_attributes)
recibo.save!
end
end
end
模型Atencion
class Atencion < ActiveRecord::Base
attr_accessible :recibo_id,
:servicio_id
belongs_to :recibo
belongs_to :servicio
end
唯一没有显示的列是servicio_ids。请帮帮我!
答案 0 :(得分:0)
尝试recibo.atencions.map(&amp;:servicio_id)
recibo.atencions ==&gt;将得到与特定recibo相关的所有atencions map(&amp;:servicio_id)==&gt;将获得相关的atencions中的所有servicio_id
答案 1 :(得分:0)
这是我的解决方案!
def self.to_csv
CSV.generate do |csv|
csv << ["id", "caja_id", "doctor_id", "numero_recibo", "paciente", "total", "total_porcentaje_laboratorio",
"total_porcentaje_clinica", "total_porcentaje_doctor", "created_at", "updated_at", "servicio_ids" ]
all.each do |recibo|
recibo.atencions.map(&:servicio_id)
csv << [recibo.id, recibo.caja_id, recibo.doctor_id, recibo.numero_recibo,
recibo.paciente, recibo.total, recibo.total_porcentaje_laboratorio, recibo.total_porcentaje_clinica,
recibo.total_porcentaje_doctor, recibo.created_at, recibo.updated_at, recibo.servicio_ids]
end
end
end