Rails 4,嵌套属性的Sum值

时间:2016-01-04 04:43:51

标签: ruby-on-rails ruby ruby-on-rails-4

您好,我有嵌套属性模型,如下所示,

Model Parent
has_many :students
has_many :classinos, through: :students
accepts_nested_attributes_for :students, :reject_if => lambda { |a| a[:firstname].blank?}, :allow_destroy => true

Model Student
belongs_to :Parents, for
has_many :classinfos, :dependent => :destroy
has_many :classlists, :through => :classinfos
accepts_nested_attributes_for :classinfos, :reject_if => lambda { |a| a[:classlist_id].blank?}, :allow_destroy => true

Model Classinfo
belongs_to :student, foreign_key: :student_id
belongs_to :classlist, foreign_key: :classlist_id

Model Classlist
has_many :students, :through => :classinfos
has_many :classinfos

这种关系就像...... 家长(计算学费)<<学生<< Classinfo>>班级列表(:学费)

Model Classlist有一个名为" tuition"的列,我想总结学生的所有学费,并在Parent模型中计算。

到目前为止,我有......

Model Classinfo
def tuitioncount
Classlist.where(:id => self.classlist_id).sum(:tuition)
end

我可以通过

显示学生的学费
<% @student.classinfos.order(classlist_id: :asc).each do |classinfo| %>
<%= classinfo.tuitioncount%>
<%end%>

但我不知道如何总结它们并在Model Parent中定义一个方法。 我需要像...这样的东西。

Model Parent
def balance
Classlist.where(:id => self.students.classinfos.classlist_id).sum(:tuition)
(or)
Student.where(:member_id => self.id).sum("student.tuitioncount")
end

请帮助我,我真的不知道如何从一个非常嵌套的模型中提取值...

1 个答案:

答案 0 :(得分:0)

如果我遵循你的协会,就像这样。

#include <iostream>
#include <tuple>
#include <utility>
#include <typeinfo>

template <typename... Args>
std::tuple<Args...> func() {
  std::tuple<Args...> x;
  return x;
}

int main() {
  auto r = func<int, char>();
  std::cout << typeid(r).name() << std::endl;
  return 0;
}

注意:在Rails 3.1中添加了对这种深层嵌套关联的支持,因此早期版本需要不同的解决方案。