用于查询关联模型的Mongoid策略

时间:2015-11-29 11:06:34

标签: ruby-on-rails mongodb mongoid nosql

说我有这个简单的应用程序:

class LearningGroup
  has_many :students
end

class Student
  belong_to :learning_group
  has_many :grades
end

class Grade
  belong_to :student
end

我想在学习小组范围内取得所有成绩。

我可以用两种方式做到:

class Grade
  belong_to :student
  belong_to :learning_group
  before_create :cache_learning_group

  def cache_learning_group
    self.learning_group = grade.learning_group
  end
end

然后拨打Grade.where(learning_group: LearningGroup.first)

但我也可以这样做:

class Grade
  belong_to :student
  scope :for_learning_group, ->(group) { :student_id.in => group.student_ids }
end
哪个更有效率?我应该使用哪一个?

0 个答案:

没有答案