我正忙着尝试建立测试所需的关系。 我们有一所有很多校园的学校。
class School
has_many :campus
....
validates :campus, presence: true
虽然没有地图表,但是校园里有school_id:
class Campus
belongs_to :school
现在我有鸡蛋和鸡肉的情况。
school = School.new(name: "Hogwarts")
campus = Campus.create(name: 'Griffendor', country_code: 7, school_id: school)
school.save!
在我有一些校园之前我不能创建一所学校,而且我不能为校园创建一个school_id,因为学校还没有保存。
我尝试在创建过程中为学校指定一个id,但它会忽略它并保存下一个可用的id。该系统正在使用Rspec,但我的生活中没有使用FactoryGirl。
这种情况有快速解决方法吗?
答案 0 :(得分:1)
我很困惑。从docs可以看出,包含has_many
调用的类不是具有外键的类。
但你有:
class School
has_many :campus
...
validates :campus, presence: true
end
你认为你在学校做什么验证?我相信你在错误的地方拥有它,这是你心痛和悲伤的根源。所以,将validates:
移到校园。这应该允许你这样做:
school = School.create(name: "Hogwarts")
看看是否有诀窍。
答案 1 :(得分:1)
删除第validates :campus, presence: true
行
学校班级必须是:
class School
has_many :campus
....
答案 2 :(得分:0)
试试:
school = School.new(name: "Hogwarts")
campus = school.campus.build(name: 'Griffendor', country_code: 7)
school.save!
campus.save! # Not sure if it's necessary; you could also declare: has_many :campus, autosave: true