`

Extend Your ActiveRecord Association Methods

阅读更多
ruby 代码
  1. class Organization < ActiveRecord::Base   
  2.   has_many :people  
  3. end  
当我们声明has_many关系之后,Rails会自动添加一系列的方法,我们就可以在程序中使用
organization.people,organization.people.create,organization << People.new,以及采用类似与organization.people.add之类的方法调用people类中的方法,如果你希望在添加has_many关系的同时添加自定义的方法到此关系中,可以使用以下的方式:
ruby 代码
  1. class Organization < ActiveRecord::Base   
  2.   has_many :people do  
  3.     def find_active   
  4.       find(:all:conditions => ["active = ?"true])   
  5.     end  
  6.   end  
  7. end  

也可以定义一个module,在module中定义一系列的自定义方法:
ruby 代码
  1. has_many definition:    
  2.   
  3. module FindActiveExtension   
  4.   def find_active   
  5.     find(:all:conditions => ["active = ?"true])   
  6.   end  
  7. end  
  8.   
  9. class Organization < ActiveRecord::Base   
  10.   has_many :people:extend => FindActiveExtension   
  11. end  

使用orgnazition.people.find_active来调用自定义方法。

分享到:
评论

相关推荐

    com.guo.android_extend:android-extend:1.0.6

    标题 "com.guo.android_extend:android-extend:1.0.6" 提示我们这是一个 Android 库项目,属于开发者郭某的扩展库,版本号为 1.0.6。通常,这种格式表示的是 Maven 或 Gradle 的依赖坐标,用于在构建 Android 项目时...

    com.guo.android_extend android-extend1.0.6.zip

    implementation 'com.guo.android_extend:android-extend:1.0.6'失败,用这个替代就好了 implementation 'com.guo.android_extend:android-extend:1.0.6'失败,用这个替代就好了

    underscore.extend与$.extend实例比较分析

    在JavaScript开发中,`underscore` 和 `jQuery` 都提供了扩展对象的功能,即 `_.extend()` 和 `$.extend()` 方法。这两个方法允许开发者合并一个或多个对象的属性到目标对象中,实现对象间的属性拷贝。本文将深入...

    cesium-extend_Extend_cesium拓展entity_cesium_

    uri: 'path/to/your/gltf/model.gltf', showWireframe: true // 显示白模 } }); ``` 这样,你的3D模型将以线框形式展示,有助于在复杂场景中观察模型的结构。 2. **避让处理(Occlusion)**: 避让是指在3D...

    解析UML用例图中include与extend的区别

    解析 UML 用例图中 include 与 extend 的区别 UML 用例图是软件开发过程中的一种重要工具,它能够帮助我们更好地理解和描述业务需求。在 UML 用例图中,有两种重要的关系:include 和 extend。这两种关系都是用来...

    android-extend-1.0.5.aar依赖库com.guo.android_extend

    虹软ArcSoft 人脸识别AndroidDemo中有一个Lib通过公网始终无法下载,替换进去就好了。 依赖替换为 implementation files('libs/android-extend-1.0.5.aar')。 依赖库com.guo.android_extend

    jQuery.extend 函数详解

    ### jQuery.extend 函数详解 #### 一、概述 在JavaScript前端开发中,jQuery是一个非常流行的库,它简化了许多常见的操作,比如DOM操作、事件处理、AJAX交互等。`jQuery.extend`是jQuery提供的一个用于扩展jQuery...

    foam-extend-4.1第三方库

    《深入理解foam-extend-4.1第三方库在OpenFOAM中的应用》 OpenFOAM,作为一款开源的计算流体动力学(CFD)软件,被广泛应用于工程和科研领域。它提供了丰富的功能和灵活性,使得用户可以对复杂的流体流动问题进行...

    原生js实现jquery $.extend方法

    原生js实现jquery $.extend方法 通过遍历对象属性来实现

    query_methods_extend

    gem 'query_methods_extend' 用法 结构书模型: class Store &lt; ActiveRecord :: Base has_many :categories has_many :books , through : :categories end // Store ( id : integer , address : string ) ...

    Extend

    标题“ Extend”可能指的是在编程领域中的扩展或继承概念,这在面向对象编程(OOP)中至关重要。在这个场景下,“ Extend”意味着一个类(子类)从另一个类(父类)继承属性和方法,从而实现代码重用和类的分层结构...

    EXTEND基础

    ### EXTEND基础知识点详解 #### 一、EXTEND软件概览 **EXTEND**是一款由刃之砺信息科技(上海)有限公司开发的工程设计软件,主要用于动态系统建模与仿真。该软件具备强大的功能和先进的技术,适用于各种专业领域...

    jquery $.fn.extend

    `$.fn.extend`是jQuery库中的一个核心方法,主要用于扩展jQuery对象的方法集合。这个方法允许开发者自定义jQuery的函数,从而实现对DOM元素的操作或添加新的功能。在jQuery中,`$.fn`实际上是`$.prototype`的一个...

    Java中extend与implement区别.doc

    Java 中 extend 与 implement 的区别 Java 语言中,extend 和 implement 是两个基本概念,它们之间的区别是非常重要的。extend 用于继承类,而 implement 用于实现接口。在 Java 中,不支持多重继承,但是可以使用...

    jquery.validate.extend.js

    jquery.validate.extend.js

    【1积分】android-extend-1.0.6.aar

    使用方式:把资源放到libs下,在gradle app 中添加 低版本:compile files('libs/android-extend-1.0.6.aar') 高版本:implementation files('libs/android-extend-1.0.6.aar')

    前端开源库-extend-error

    在前端开发中,错误处理是不可或缺的一部分,而`extend-error`正是一个专为前端和Node.js环境设计的开源库,用于扩展和定义自定义错误类型。这个库使得开发者能够更方便、更规范地管理和报告错误,提高代码的可读性...

Global site tag (gtag.js) - Google Analytics