`
netfork
  • 浏览: 487931 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

多态下的counter_cache

    博客分类:
  • Ruby
阅读更多
做rails的人是幸福的,因为有时候没必要一定要看专门的api文档,在相应的rb文件里都写的很清楚;感谢脚本语言,让我们可以看到牛人们写的ruby代码。

通常做回复次数、收藏次数时,我们往往会用到rails中的计数器方法来实现,也就是增加子表相对父表的:counter_cache。

一般情况下,我们照着那本Web开发敏捷之道上做就可以了,但是,当要收藏的东西五花八门时,就需要使用单表继承来解决,这样引发一个问题,就是还如下声明时,每个父表中的收藏次数的字段名都不统一。

class TruckFavorite < Favorite
  belongs_to :truck, :foreign_key => "parent_id", :counter_cache => true
end


这样的声明,要求父表中,计数器字段必须使用 truck_favorites_count、line_favorites_count等这样的字段, 而不是我想用的统一使用favorites_count这样的字段。

那么解决之法呢,rails当然有考虑。
class TruckFavorite < Favorite
  belongs_to :truck, :foreign_key => "parent_id", :counter_cache => :favorites_count
end


是的,指定计数器字段名即可了。

全文完。
分享到:
评论

相关推荐

    CPP.rar_多态 .cpp_继承与多态_继承与多态C++

    标题中的"CPP.rar_多态 .cpp_继承与多态_继承与多态C++"表明这个压缩包文件包含了关于C++编程语言中多态性(Polymorphism)和继承(Inheritance)的概念示例。多态性和继承是面向对象编程(Object-Oriented ...

    four_java继承封装和多态_four_againgpg_

    在这个名为"four_java继承封装和多态_four_againgpg_"的压缩包中,我们预计将看到三个不同的Java类,这些类展示了如何在实际编程中应用这些概念。 首先,让我们详细了解一下这三个概念: 1. **继承(Inheritance)...

    Lesson_面向对象继承,多态,接口_实训

    在这个"Lesson_面向对象继承,多态,接口_实训"中,我们将深入探讨这三个关键概念:继承、多态和接口,并通过实践来加深理解。 首先,让我们来看看**继承**。继承是面向对象编程的一个重要特性,它允许一个类(子类...

    xm_LeakMax_MainProg.rar_multistate_多态系统 matlab_多态贝叶斯_贝叶斯网络

    多态系统的贝叶斯网络模型的参数学习算法,基于Noisy-Max模型

    D11接口,多态.zip_d11接口_java接口_mannerglc_多态

    接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象...Java中多态的代码体现在一个子类对象(实现类对象)既可以给这个子类(实现类对象)引用变量赋值,又可以给这个子类(实现类对象)的父类(接口)变量赋值。

    类的多态练习_C++_类的多态练习_

    首先,我们要明白多态性的两种主要形式:静态多态(Static Polymorphism)和动态多态(Dynamic Polymorphism)。静态多态主要通过函数重载(Function Overloading)和运算符重载(Operator Overloading)实现,...

    CalculateByteSum_labview_多态VI_

    在LabVIEW编程环境中,"CalculateByteSum_labview_多态VI_"这个标题暗示了一个与计算字节之和相关的多态虚拟仪器(VI)项目。多态VI是LabVIEW中的一个高级特性,允许创建一个VI,它能根据输入数据的类型自动调整其...

    多态变形技术教学_2

    作者通过这篇教程,不仅回顾了之前的基础概念,还进一步介绍了如何在32位Windows环境下构建复杂的多态引擎。以下是对本文核心内容的详细总结。 #### 指令集 ##### 操作数长度和地址长度属性 在计算机体系结构中,...

    python(封装、继承、多态)_.mp4

    面向对象的三大特性是指:封装、继承和多态。 Python3 面向对象 Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象

    11_Java面向对象_第3天(接口、多态)_讲义

    多态是面向对象的四大特性之一,指的是同一种类型在不同情况下表现出不同的形态。在Java中,多态主要体现在方法重载(Overloading)和方法重写(Overriding)两个方面。 - **方法重载**:在同一类中,方法名相同但...

    Java__多态下.mp4

    Java__多态下.mp4

    多态表现(java)

    多态的列子其中涉及到封装是java适应于java初学者学习和模仿,

    JAVA基础 第4章继承与多态_练习题_200910.docx

    ...

    异常多态_购物车为例

    在这个“异常多态_购物车为例”的案例中,我们将深入探讨如何在实际的购物车系统中应用这一理念。 购物车系统是电子商务平台的核心组成部分,它的功能包括添加商品、删除商品、计算总价等。在处理这些操作时,可能...

    java基础_多态

    它主要体现在方法的多态和对象的多态。 一、方法的多态 方法的多态主要体现在子类继承父类后,可以重写(Override)父类的方法。当使用父类引用指向子类对象时,调用的是子类重写后的版本,这就是动态绑定或晚期...

    小型员工管理系统_继承_C++_多态_

    企业中包括普通员工、中层管理人员、财务人员、高层管理人员等。每类人员可能具有不同的基本信息,或拥有不同的功能操作。1) 每个员工都具有基本信息(姓名、性别、年龄、职务、工作时间等)但是根据员工类型不同...

    java中多态的内存分析

    动态绑定使得我们可以在不关心对象具体类型的情况下编写代码,只要保证对象是某个接口或父类的实例即可。这样提高了代码的可扩展性和复用性。 此外,Java中的接口也是实现多态的一种方式,通过实现接口,类可以拥有...

    实验三_继承与多态_(学号+姓名).pdf

    根据您提供的文件信息,文件标题是“实验三_继承与多态_(学号+姓名).pdf”,描述也重复了文件标题,标签为“技术”,以及部分内容展示了某种编程语言(可能是Java或类似面向对象的编程语言)中的类继承结构。...

    labview创建多态VI

    创建多态VI在LabVIEW中的实现主要依赖于函数选板(Function Palette)上的数据类型结构(Data Type Structure)。下面将详细介绍如何在LabVIEW中创建和使用多态VI。 1. **定义多态VI的基本结构** 在LabVIEW中,一...

Global site tag (gtag.js) - Google Analytics