我正忙于尝试建立测试所需的关系。我们有一所有很多校区的学校。
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。
对于这种情况,有没有快速解决的办法?
发布于 2016-02-28 06:48:10
我真的很困惑。正如您从docs中看到的,包含has_many调用的类不是具有外键的类。

但是你有:
class School
has_many :campus
...
validates :campus, presence: true
end你认为你在学校验证的是什么?我相信你把它放在了错误的地方,这是你心痛和悲伤的根源。所以,把validates:搬到校园去吧。这将允许您执行以下操作:
school = School.create(name: "Hogwarts")看看能不能奏效。
发布于 2016-02-28 07:01:20
删除行validates :campus, presence: true
学校班级必须是:
class School
has_many :campus
....发布于 2016-02-28 06:28:51
试一试:
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: truehttps://stackoverflow.com/questions/35675852
复制相似问题