`
jsntghf
  • 浏览: 2528497 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

提取到组合类中

阅读更多

如果一个模型中有一些关联字段,例如一个用户有一个address_city和一个address_street,你可以把它们提取到组合类中去。

 

丑陋的

 

# == Schema Information
#  address_city        :string(255)
#  address_street      :string(255)
class Customer < ActiveRecord::Base
  def address_close_to?(other_customer)
    address_city == other_cutomer.address_city
  end

  def address_equal(other_customer)
    address_street == other_customer.address_street &&
      address_city == other_customer.address_city
  end
end

 

可以看到Customer有两个属性address_city和address_street,但是应该是Address的属性,如果你不想创建一个addresses的数据库表的话,你只要创建一个组合类Address。

 

重构

 

class Customer < ActiveRecord::Base
  composed_of :address, :mapping => [ %w(address_street street), %w(address_city city)]
end

class Address
  attr_reader :street, :city

  def initialize(street, city)
    @street, @city = street, city
  end

  def close_to?(other_address)
    city == other_address.city
  end

  def ==(other_address)
    city == other_address.city && street == other_address.street
  end
end

 

Rails提供了一个帮助方法composed_of来方便的提取一个组合类,这里我们为Customer添加了一个叫Address的组合类,在Address模型中我们使用了street和city属性,并且和Customer模型中的address_street和address_city对应。

分享到:
评论

相关推荐

    易语言组合类模块

    《易语言组合类模块》是针对易语言编程环境中设计的一种高效、灵活的模块化编程工具。易语言,作为中国本土的编程语言,以其简洁明了的语法和强大的功能深受程序员喜爱。组合类模块在此背景下应运而生,它提供了一种...

    CARS.rar_CARS 分类_cars特征提取_cars算法_特征波长提取_组合模型

    用于matlab模式识别(分类和回归)的特征变量提取方法,竞争性自适应重加权算法(CARS)是通过自适应重加权采样(ARS)技术选择出PLS模型中回归系数绝对值大的波长点,去掉权重小的波长点,利用交互验证选出RMSECV指...

    图片分类 特征提取 线性分类

    主要用到的两个功能函数是model和[predicted_label, accuracy, prob_estimates],首先是将提取的5个训练集的特征值转换成一个50000*512的矩阵Traindata[ 50000,512],在提取各个训练数据集的标签组合成一个50000*1的...

    基于opencv的视频帧提取及组合

    ### 基于OpenCV的视频帧提取及组合 #### 一、概述 在计算机视觉领域,对视频数据进行处理是十分常见的需求之一。而OpenCV作为一款强大的计算机视觉库,提供了丰富的API来帮助开发者实现视频处理任务。本文将详细...

    MDF碎片提取组合程序

    "MDF碎片提取组合程序"就是为了解决这类问题而设计的工具。 MDF文件碎片的产生通常是由于不正常的数据库关闭、磁盘错误或硬件故障导致的。这些碎片可能散布在硬盘的不同位置,使得数据库无法正常读取,甚至丢失部分...

    AR模型特征提取及分类.zip_AR_AR 特征提取_ar模型特征_特征抽取_特征提取分类

    5. **分类应用**:将提取的AR特征输入到分类器(如支持向量机、决策树、神经网络等)中,进行训练和测试,以实现对不同类别数据的分类。 在提供的文件中,"ARcanshugonglvpudiaoyong.m"可能是AR模型的参数估计或...

    颜色提取工具,可以方便提取出某一颜色区域的RGB值

    颜色提取在IT行业中是一项重要的视觉设计与图像处理技术,它主要涉及到颜色模型、色彩分析以及图像处理算法。在设计、摄影、游戏开发、数据分析等多个领域都有广泛应用。标题和描述中的"颜色提取工具"是一个能够帮助...

    组合框获取文件夹内文件名称,加入到组合框中。

    然后,它将遍历每条记录,提取字段值,并将它们添加到名为"超级列表框1"的组件中。 至于"获取记录.e"这个文件,根据上下文推测这可能是一个包含具体实现代码的源文件。实际应用中,你需要将上述逻辑与这个文件中的...

    一组使用稀疏编码算法 进行特征提取和图像分类 的 Python工具_python_代码_下载

    每个信号都可以表示为字典中原子的稀疏线性组合: 些受支持的求解器包括: 正交匹配追踪 (OMP) 批量 OMP [1] 集团 OMP [2] 非负 OMP [3] 迭代硬阈值 字典学习算法 从数据中学习字典涉及解决以下目标 替代文字 从...

    利用gdal批量提取遥感影像波段_单波段提取_gdal提取波段_利用gdal批量提取遥感波段中的单波段_遥感影像_GDAL_

    实际应用中,可能还会涉及波段组合、波段数学运算、重采样等高级操作。了解并掌握这些技巧,对于高效处理遥感数据至关重要,尤其是在大规模遥感数据分析项目中。通过"批量提取.py"这样的脚本,你可以自定义规则,...

    ENVI监督分类、决策树分类、火烧迹地提取和ArcMap制图

    例如,本案例中选择了含有近红外(NIR)、红光和绿光波段组合的TM图像(can_tmr.img),并通过目视识别出林地、草地/灌木、耕地、裸地、沙地等不同地物类别。 2. **样本选择**:样本选择是监督分类的基础。通过ENVI...

    信号特征提取程序(matlab实现)

    在机器视觉中,信号特征提取可能涉及到边缘检测、纹理分析、颜色特征提取等。例如,边缘检测可以通过Canny算法或Sobel算子实现,它们可以帮助确定图像中的物体边界。纹理分析则可能用到共生矩阵、灰度共生矩阵等方法...

    文本分类特征提取的ppt

    词项选择侧重于挑选已有的特征,而词项提取则可能涉及到基于训练集和其他知识生成新的特征组合。特征的纳入(inclusion)策略是保留重要的词项,而排除(exclusion)策略则是去除不重要的词项。 贪婪包含算法是一种...

    基于块划分特征提取的SVM图像分类

    5. **SVM分类**:将得到的特征向量输入到训练好的SVM模型中进行分类。 四、源码实现 提供的压缩包文件"svm"可能包含了实现这个过程的代码。源码通常包括数据读取、图像预处理、块划分、特征提取、特征编码和SVM...

    ArcGIS教程:多值和值的提取至点 (空间分析)

    本教程将介绍如何使用 ArcGIS 将多值和值提取至点要素类中。该功能可以在点要素类的指定位置提取一个或多个栅格像元值,并将值记录到点要素类的属性表中。 知识点1:多值提取至点 多值提取至点是指从栅格数据中...

    matlab中常见的特征提取办法.zip

    - HOG(方向梯度直方图)用于行人检测等应用,`vision.HOGDescriptor`类提供了完整的HOG特征提取流程。 - Gabor滤波器可以提取图像的频率和方向信息,适用于纹理和面部特征的提取。 5. **特征选择与匹配** - ...

Global site tag (gtag.js) - Google Analytics