阅读更多

9顶
0踩

编程语言
Ryan Daigle发布了一系列关于rails2.1中新特性的文章.这里是这个系列中的一篇.

Has one :through

has_one终于长得和has_many一样高了,它也支持了:through选项.

class Magazine < ActiveRecord::Base
  has_many :subscriptions
end

class Subscription < ActiveRecord::Base
  belongs_to :magazine
  belongs_to :user
end

class User < ActiveRecord::Base
  has_many :subscriptions
  has_one :magazine, :through => : subscriptions, :conditions => ['subscriptions.active = ?', true]
end

并且当through属性改变后,中间属性会随之改变
@ryan.subscriptions #=> []
@ryan.magazine = Magazine.create(:name => 'Hustler')
@ryan.subscriptions #=> [<Subscription magazine_id: 1, user_id: 1 ...>]

译者注: 当through连接有多个record,has_one会返回第一个.
Rails2.1中的新东西之三: Dirty Objects
Rails2.1中的新东西之二: Gem Dependencies
Rails2.1中的新东西之一: has-one-through
9
0
评论 共 2 条 请登录后发表评论
2 楼 fl1429 2009-08-12 10:25
:through 就表示关联表?
1 楼 PBFox 2008-06-02 23:40
那这样的话subscriptions的表结构应该是什么样子呢?

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • (软件工程复习核心重点)第十章面向对象设计-第二节:启发规则和软件重用

    文章目录一:启发规则(1)设计结果应该清晰易懂(2)一般一特殊结构的深度适当(3)设计简单的类(4)使用简单的协议(5)使用简单的服务(6)把设计变动减至最小二:软件重用(1)概述A:重用B:软件成分重用的级别①:代码重用②:设计结果重用③:分析结果重用C:典型的可重用软件成分(2)类构件A:可重用软件构件特点B:类构件的重用方式 一:启发规则 (1)设计结果应该清晰易懂 保证设计结果应该清晰易懂的主要因素如下 用词一致:应该使名字与它所代表的事物–致,而且应该尽量使用人们习惯的名字。不同类中相似服务的名

  • 面向对象的三个基本特征 详解

    面向对象的三个基本特征是:封装、继承、多态。     封装  封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。  封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。  继承  面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的所有功能,并在

  • C++面向对象编程三大特征都有什么?每种特征的主要作用是什么?

    多态是指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。封装在现实中的例子:人们使用各种电子设备,人们知道按下每个按键的功能(音量,关机)是什么,不需要知道各个功能是怎样实现的,也不需要知道其内部电路或构造。把对象的属性和功能结合成一个独立的系统单位。重载包括函数重载和运算符重载 ,函数重载:使用同一个名字的多个函数定义。C++中,编译时多态是通过重载实现的,而运行时多态是通过虚函数实现的。定义:如果类的对象A拥另一个类B的全部属性与服务,称作类A对类B的继承。

  • 面向对象方法为何有利于软件复用?

    今天突然想到这个问题,觉得应该写点东西!我认为应该是下面这些吧:对象与类:用对象类作为系统的基本构成单位,符合可复用构件应具备的主要特性: 完整性——类的属性与服务完整地表达了事物的静态特征和动态特征。独立性——类与外部的事物之间有明确的界限和较少的接口。可标识性——类的命名与问题域中的事物概念吻合。一般性——对象类是对实际事物的映射,客观性强。当其它系统中遇到同类事物时,用同样的对象类进行描述...

  • UML中几种类间关系:继承、实现、依赖、关联、聚合、组合的联系与区别

     继承 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性; 实现 指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字imp

  • 论面向对象方法与软件复用关系

    1.软件复用的特点和现状软件复用就是将已有的软件成分用于构造新的软件系统。可以被复用的软件成分一般称作可复用构件,无论对可复用构件原封不动地使用还是作适当的修改后再使用,只要是用来构造新软件,则都可称作复用。软件复用不仅仅是对程序的复用,它还包括对软件生产过程中任何活动所产生的制成品的复用,如项目计划、可行性报告、需求定义、分析模型、设计模型、详细说明、源程序、测试用例等等。如果是在一个系统中多次

  • 各层次的复用与外部表现(复习)

    根据复用的层次不同,有多种类型的划分。 Design patterns基于设计模式的复用:体现在抽象和具体对象的交互上; Component-based development:基于组件层面的复用 Application frameworks:提供一些可进行调整、拓展的抽象或具体类 Legacy system wrapping:只留下接口提供服务 Source code层面:方法、声明 实现:代码...

  • 第十章多态及软件复用

    第十章多态及软件复用 重载 改写 多态变量 泛型 10.1编程语言中的多态 10.1.1多态的形式-1 重载(专用多态):类型签名区分 class overloader{ public void example(int x){......} public void example(int x,double y){......} public void example(string x){......} } 10.1.2多态的形式-2 改写(包含多态):层次关系中,相同类型签

  • 面向对象编程的三个基本特征

    面向对象编程的三个基本特征:封装、继承、多态 1.封装:将客观事物抽象成类,每个类对自身的数据和方法实行 protection。 2.继承:接口继承、实现继承 接口继承:public派生类继承基类的接口,它具有与基类相同的接口。实现继承:使用private或protected派生的类不继承基类的接口,相反,这些派生类通常被称为实现继承。 3.多态:是将父对象设置成为和一个或更多的他的子

  • 面向对象程序设计语言的三个基本特征:封装、继承、多态

    封装:指的是将对象实现细节隐藏起来,然后通过一些公用方法来暴露该对象的功能; 继承:继承是面向对象实现软件复用的重要手段,当子类继承父类后,子类作为一种特殊的父类,将直接获得父类的属性和方法; 多态:多态指的是子类对象可以直接赋给父类变量,但运行时依然表现子类的行为特征,这意味着同一个类型的对象在执行同一个方法时,可能表现出多种行为特征。 ...

  • 开发思想: 对象复用

    The ANDROID recommended application architecture recommends breaking code into multiple classes to benefit from the principle of Separation of concerns, where each class of the hierarchy has a defined responsibility. This requires wiring together more and.

  • 设计模式-可复用面向对象软件的基础 [读书笔记]

    1.将软件与设计模式比拟为城市与建筑模式,那么在面向对象的解决方案里,我们将对象和接口看成墙壁和门窗,模式的核心在于提供了相关问题的解决方案。   在软件设计中可能会遇到很多类似的问题,在每次遇到类似问题时我们不必全都新想办法来解决,而可以复用之前解决类似问题的方案,解决问题多之后就   会有针对特定问题有特定(相对固定)的方式方法来解决,这相对固定的方式方法就是设计模式,其也算是经验总结。

  • 面向对象技术在软件重用和体系结构中的应用

    面向对象技术在软件重用和体系结构中的应用作者:田景成 发布时间:2001/01/08 文章摘要:  面向对象技术提供了一种新的认知和表示世界的思想和方法,它对计算机工业的影响是深远的。计算机从业人士利用它提出了面向对象的计算机程序设计语言、面向对象的软件设计方法、面向对象的数据库等等。同时面向对象技术为软件工业实现工程化提供了强有力的支持,正是面向对象技术造就了

  • 面向对象的复用技术

    本文翻译自这篇文章,这篇文章写于1998年,作者是Scott Ambler,真的挺久远了。看看上个世纪末的时候,程序员的视角和观点。 想从面向对象复用技术中真正获益,你就必须理解不同种类的复用,并且自如地在不同场合下使用它们。 可复用资源 业务对象根源 复用性是面向对象技术带来的很棒的潜在好处之一。遗憾的是,很多情况下这个好处并不能真正兑现。原因在于复用并不是毫无代价的,它并不是你使用面向对象开发...

  • 2023全球人工智能研究院观点报告:生成式人工智能对企业的影响和商业前景

    内容概要:报告详细介绍了生成式人工智能对企业和消费者的影响及其商业前景。生成式人工智能通过生成与训练数据相似的新颖数据,提升了人工智能从‘赋能者’到‘协作者’的角色。报告讨论了生成式人工智能的技术基础,如Transformers,以及在消费者和企业中的应用案例。文中指出,生成式人工智能可以优化企业的工作流程,提高效率和创新能力,但同时强调了安全性、数据隐私和道德等问题。 适合人群:企业高管、技术领导者、数据科学家、产品经理等。 使用场景及目标:帮助企业理解和评估生成式人工智能的商业潜力,优化内部流程,提高效率和创新力,以及防范潜在的风险。 其他说明:生成式人工智能正处于快速发展的初期阶段,各行业都有广阔的应用前景,但需要注意监管和风险管理。

  • 2024年第三季度深圳房地产市场回顾-CBRE.pdf

    2024年第三季度深圳房地产市场回顾-CBRE

  • 【java毕业设计】springboot南皮站化验室(springboot+vue+mysql+说明文档).zip

    项目经过测试均可完美运行! 环境说明: 开发语言:java 框架:ssm jdk版本:jdk1.8 数据库:mysql 5.7+ 数据库工具:Navicat11+ 管理工具:maven 开发工具:idea/eclipse 部署容器:tomcat7+

  • 【路径规划】基于matlab单障碍物和多障碍物的机器人避达问题仿真【Matlab仿真 7339期】.md

    CSDN Matlab武动乾坤上传的资料均有对应的代码,代码均可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

  • ccc2.4.13 内置inspector改造

    ccc2.4.13 内置inspector改造

Global site tag (gtag.js) - Google Analytics