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
https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations
如果你要设置特定关系,在创建的时候自己进行关联。
#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
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 声明了默认数据。