- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
据我了解,在定义 :counter_cache 选项时,应在包含 belongs_to 声明的模型上指定它。所以我有点不确定在通过关联使用 has_may 时如何处理这个问题(因为我相信在这种情况下不使用 belongs_to 声明):
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :physician, :counter_cache => appointment_count
end
class Patient < ActiveRecord::Base
end
我希望使用 :counter_cache 选项来更有效地查找属于医生的患者数量。
myPhysician.patients.count
仅供引用:Rails 3.1
干杯
最佳答案
我不确定你想要什么样的关系。该示例类似于 Rails Guide 中的示例
class Physician < ActiveRecord::Base
has_many :appointments
has_many :patients, :through => :appointments
end
class Appointment < ActiveRecord::Base
belongs_to :physician
belongs_to :patient
end
class Patient < ActiveRecord::Base
has_many :appointments
has_many :physicians, :through => :appointments
end
Physician
有很多 Appointments
,并且有很多 Patients
约会
属于(有一个)Physician
和一个Patient
Patient
有许多 Appointments
和许多 Physicians
。关于 :counter_cache 选项,根据 belongs_to doc :如果您想要属于 Physician
的 Patients
的数量,您需要:
class Appointment < ActiveRecord::Base
belongs_to :physician, :counter_cache => :patient_count
belongs_to :patient
end
并且您需要编写迁移以将 patient_count 列添加到 Phyisicans
表。
然而,对于 has_many 通过关系 Rails 3.1 似乎自动检测 counter_cache 列,因此您不必指定它(删除 :counter_cache => :patient_count
).如果您指定它,您的计数器将增加 2(这很奇怪)。
顺便说一下,Rails 3.1 中的 :counter_cache 选项似乎存在一些问题,如这里所报告的:
考虑到所有这些,也许您最好的选择是使用回调编写您自己的计数机制。
希望对您有所帮助:)
关于ruby-on-rails - has_many :through with counter_cache,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8991118/
ShiftNote belongs_to :shift, counter_cache: true workflow do state :scheduled state :can
我想知道 counter_cache 是否可以在单表继承中工作。 对于这些型号: class User has_many :questions end class Question belon
我正在' rake 中止! ...posts_count 被标记为只读错误。 我有两个模型:用户和帖子。 users has_many posts. posts belongs_to :user, :
我有 3 个模型:Topic , Post , Link . class Topic < ActiveRecord::Base has_many :posts end class Post < A
我的 rake 即将中止! ... posts_count 被标记为只读错误。 我有两个模型:用户和帖子。 users has_many posts. posts belongs_to :user,
我正在使用 counter_cache 让 MySQL 为我做一些簿记工作: class Container has_many :items end class Item belongs_to
据我了解,在定义 :counter_cache 选项时,应在包含 belongs_to 声明的模型上指定它。所以我有点不确定在通过关联使用 has_may 时如何处理这个问题(因为我相信在这种情况下不
我有一组简单的两个相关表的“订单”,其中有许多“line_items”。还有一个与订单项相关联的数量,例如 订单1 line_item a:'为初学者编织的篮子',数量:3 line_item b
我正在学习 Rails,但遇到了一个小问题。我正在编写带有任务列表的死简单应用程序,因此模型看起来像这样: class List 'Task',
我如何优化我的 SQL 查询,以忽略这样的情况: Meeting.find(5).users.size => SELECT COUNT(*) FROM ... WHERE ... User.find(
使用 Rails 3.1.3,我试图弄清楚为什么我们的计数器缓存在通过 update_attributes 更改父记录 ID 时没有被正确更新。 class ExhibitorRegistration
编写具有 counter_cache 列的装置既乏味又复杂,我尝试使用 test_helper.rb 中的方法 reset_counters 但它没有用。以同样的方式让它工作? 最佳答案 我使用猴子路
我刚刚创建了一个 counter_cache 字段, Controller 看起来像这样。 @users = User.where(:sex => 2).order('received_likes_
我有表users和scores。 以下是关联: belongs_to :user #score model has_many :scores #user model 表users具有名为scores_
伙计们怎么了? 我在我的项目中创建了一个迁移,将“likes_count”列添加到 Post: def self.up add_column :posts, :likes_count, :
我有一个Comment模型,belongs_to一个Message。在comments.rb中,我有以下内容: class Comment true, :touch => true end 之所以这
假设我有以下模型: class Location PASSES # method 1 s = Storable.create(bin: l) l.reload l.s
我有 User型号has_many :notifications . Notification有一个 bool 列 seen和一个名为 :unseen 的范围返回所有通知,其中 seen是 false
我正在努力向我的模型添加 counter_cache: 用户(id、org_id) 组织(id、users_count) 但出现以下错误:ArgumentError(未知 key :counter_c
我有评论模型: class Comment include Mongoid::Document include Mongoid::Timestamps belongs_to :commen
我是一名优秀的程序员,十分优秀!