`
trace
  • 浏览: 124340 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何在factory_girl的define中定义has_many( & :through) association

阅读更多
刚才google到一篇介绍在factory_girl的define中定义has_many关联的方法,无奈网页链接打不开(被墙了还是怎么的),只好用网页快照看了。

方法一如下:

Factory.define :user do |user|
  user.name "My Name"
  user.groups {|groups| [groups.association(:group)]}
end

他强调的是那对中括号。

然后有人回帖,介绍了一个hacker级别的方法:

Factory.define :child do |f|

  class << f
    #do whatever you can do in a normal class definition
    def default_parent
      @default_parent ||= Factory(:parent)
    end
  end

  f.sequence(:name) {|n| "Child#{n}"}
  f.parent_id { f.default_parent.id }
end

后一种方法就能适用于很多情况了

最后强调一下:测试很重要,千万不能掉!
分享到:
评论

相关推荐

    object_envi_resize__define_IDl_

    标题中的"object_envi_resize__define_IDl_"很可能是指一个使用IDL(Interactive Data Language)编写的ENVI(Environment for Visualizing Images)扩展程序,该程序专注于图像对象的重采样操作。ENVI是一款广泛...

    factory_girl:用于将对象设置为与茉莉,摩卡或qunit一起使用的关系数据的库

    从rails的factory_girl移植到nodejs的端口功能 安装 Node.js: npm install 'factory_girl' 用法 定义工厂 var FactoryGirl = require ( 'factory_girl' ) ; // for nodejs FactoryGirl . define ( 'user' , ...

    MDK5 宏定义CC_ARM

    - **__RAM_FUNC**:用于定义执行在RAM中的函数。在不同的编译器中,实现方法各不相同。例如,在ARM编译器中,可以通过更改文件的“Code/Const”区域来指定函数存储在RAM中;而在IAR编译器中,则使用`__ramfunc`...

    Define_Grid_Motion.zip_DEFINE_GRID_MOTION_fluent udf_fluent变形_f

    标题中的"Define_Grid_Motion.zip_DEFINE_GRID_MOTION_fluent udf_fluent变形_f" 提到了`Fluent`中的`Define Grid Motion`功能,这正是用来定义网格运动的一种方法,它允许用户自定义边界条件下的网格动态行为。...

    DEFINE_DPM_EROSION.rar_DEFINE DPM EROSION_DPM_UDF EROSION_fluent

    标题中的"DEFINE_DPM_EROSION.rar_DEFINE DPM EROSION_DPM_UDF EROSION_fluent"指的是一款与 Fluent 模拟软件相关的用户定义函数(UDF),用于模拟颗粒动力学(DPM)过程中的侵蚀现象。Fluent 是一款广泛使用的计算...

    VIVUDF2_CG_MOTION_DEFINE_CG_MOTION_二维运动动网格_

    在DEFINE_CG_MOTION UDF中,用户需要编写C语言代码来定义物体的运动规律,比如通过时间、速度、加速度或其他物理参数来驱动物体的运动。 动网格计算的核心在于,当边界条件改变时,软件能够自动调整网格以适应新的...

    objcircle__define.rar_IDl

    2. **类定义**:在`objcircle__define.pro`文件中,我们可能会看到类似这样的定义: ```idl DEFINE CLASS objcircle AS OBJECT { ; 定义属性,如圆心坐标和半径 REAL, PRIVATE :: xcenter, ycenter REAL, ...

    fsc_psconfig__define.rar_fsc_psconfig_defi_idl图像处理

    《fsc_psconfig__define.rar_fsc_psconfig_defi_idl图像处理》是一个与IDL(Interactive Data Language)相关的图像处理程序。IDL是一种广泛应用于科学数据分析和可视化,尤其是天文学、地球科学以及医学成像领域的...

    C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别

    在C++编程中,我们经常需要在头文件(header files)中防止被多次包含,以避免重复定义的问题。为此,有两种常见的技术:`#ifndef _XXX_H_ #define _XXX_H_` 和 `#pragma once`。这两种方法都有其优势和局限性,下面...

    UDF控制柔性振动膜的动网格问题.zip_GRID udf_define grid motion_define_cg_动网格_动

    动网格,DEFINE_CG_MOTION,DEFINE_GRID_MOTION,很好的模板

    第四章 DEFINE宏_UDf宏_UDFdescription_

    "第四章 DEFINE宏_UDf宏_UDFdescription_"这一标题暗示了我们将会探讨Fluent中的用户定义函数(User-Defined Functions,简称UDFs)以及与其相关的DEFINE宏。在Fluent中,UDFs允许用户自定义物理模型,以处理标准...

    宏(#define)定义函数妙用

    在C/C++编程中,宏定义(#define)是一种预处理器指令,用于创建符号常量或简单的文本替换。宏在程序编译时起作用,它不是真正的函数,但可以通过模拟函数调用来实现类似的功能,从而提高代码的可读性和可维护性。在...

    15_typeDefine.txt

    15_typeDefine.txt

    linux 函数时间统计 打印

    #define __TIME_TRACE_UTILS__ #include #include #include #include #include #include #include #include #define NS_TT_START namespace tt { #define NS_TT_END } #ifdef __TIME_TRACE_DEBUG__ # ...

    UDF 动网格,DEFINE-CG-MOTION,DEFINE-GRID-MOTION

    `DEFINE_CG_MOTION`和`DEFINE_GRID_MOTION`是UDF编程中用于定义网格运动的两个关键函数。它们是ANSYS Fluent内建的宏,用于在UDF中指定网格如何随时间变化。 1. `DEFINE_CG_MOTION`:这个宏主要用于定义中心点...

    常用宏定义#define

    在C/C++编程语言中,`#define` 是预处理器指令,用于创建宏定义,它在编译阶段执行文本替换,使得代码更加灵活且可定制化。宏定义是C/C++编程中的一个重要概念,它可以帮助程序员实现代码复用、简化复杂表达式、提供...

    csl_css_宏定义_解析

    在深入探讨《csl_css_宏定义_解析》这一主题之前,我们首先应当明确几个关键概念:宏定义、结构体以及它们在特定上下文中(如本例中的EDMA配置)的作用与意义。本文将详细解析《csl_css_宏定义_解析》,重点解读其在...

    externC_ifndef_define_endif_pragma onceDemo.zip

    在C++编程中,`extern "C"`、`#ifndef`、`#define` 和 `#endif` 是四种非常重要的预处理器指令,它们在不同场景下有着特定的作用。`pragma once` 是一个非标准但广泛使用的编译器指令,虽然在C++标准中未定义,但在...

Global site tag (gtag.js) - Google Analytics