Rails 4.1 删除了counter_sql
fromhas_many
关联,因此以下内容不再起作用:
class Project < ActiveRecord::Base
has_many :backers,
-> { select('COMPLEX SQL QUERY') },
through: :pledges,
source: :backer,
counter_sql: proc { "COMPLEX COUNT SQL QUERY" }
(...)
end
我需要一个counter_sql
在这里,因为在使用 COMPLEX SQL QUERY 时select
,AR 在我这样做时不会构建有效的 SQL project.backers.count
。
要解决此问题,我会将其移至如下方法:
class Project < ActiveRecord::Base
has_many :backers,
-> { select('COMPLEX SQL QUERY') },
through: :pledges,
source: :backer
def backers_count
self.class.count_by_sql 'COMPLEX SQL QUERY'
end
(...)
end
这是一个好方法还是有更好的方法?