我如何优化我的SQL查询,以忽略如下情况:
Meeting.find(5).users.size =>从…选择COUNT(*)… User.find(123).meetings.size =>选择计数(*)从…在哪里…
Meeting.find(5).users.size =>从…选择COUNT(*)…
User.find(123).meetings.size =>选择计数(*)从…在哪里…
我不知道如何在这里使用counter_cache。
这是我的模型关系:
class Meeting < ActiveRecord::Base has_many :meeting_users has_many :users, :through => meeting_users end class User < ActiveRecord::Base has_many :meeting_users has_many :meetings, :through => meeting_users end class Meeting_user < ActiveRecord::Base belongs_to :meeting belongs_to :user end
最佳的解决方案是什么?
以及如何在此处实现counter_cache?
据我所知,您不能counter_cache与through关联一起使用,这就是为什么您应该手动增加关联的原因。
counter_cache
through
例如(未测试):
class MeetingUser < ActiveRecord::Base ... after_create { |record| Meeting.increment_counter(:users_count, record.meeting.id) } after_destroy { |record| Meeting.decrement_counter(:users_count, record.meeting.id) } end