说我有这个简单的应用程序:
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
哪个更有效率?我应该使用哪一个?