新手问题 FactoryGirl 主从表的数据怎么造?

newbie · 2014年06月02日 · 最后由 ichord 回复于 2014年06月02日 · 2269 次阅读

主表

FactoryGirl.define do
  factory :school do |f|
    f.name = "school0"
  end
end

从表

FactoryGirl.define do
  factory :student do |f|
    f.school_id = ? # 这里怎么把主表school创建的记录ID设置到这?
    f.name = "zhangsan"
  end
end

如果你要设置特定关系,在创建的时候自己进行关联。

#2 楼 @ichord 谢谢。但是没太看懂,如果从表中想为其他项设置单独的数据,关联该怎么做呢? 现在不想在创建的时候自行关联,即 has_many,belongs_to 等形式。

你的代码和现在官方 FactoryGirl 的语法不太一致,我以官方为准

FactoryGirl.define do
  factory :school do
    name "school0"
  end
end

FactoryGirl.define do
  factory :student do
    school # https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations
    name "zhangsan"
  end
end

A: 如果从表中想为其他项设置单独的数据,关联该怎么做呢? Q: 这个和关联没有关系,在创建的是后给它单独赋值就可以了。以 student 为例,创建是你想为 name 设置一个单独的值,create :student, name: 'newbie

建议将官方文档先大概阅读一遍 https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md,就能更明白了。

#4 楼 @reyesyang 谢谢。这回明白了。

#3 楼 @newbie 跟 AR 的用法一样啊...

create :student, name: "John", school: create(:school, name: "Wala" )

相当于

Student.create name: "John", school: School.create(name: "Wala")

只是 factory_girl 声明了默认数据。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号