播种失败:具有关联的数据库
Fails to seed: db with association
组织和成员这两个模型具有 1:many 关系。在 的基础上,我添加到我的组织模型文件中:
validate :check_member
private
def check_member
if members.empty?
errors.add(:base, 'User is not present')
end
end
因此,如果还创建了该组织的成员,它只会创建一个新组织。我相应地调整了我的种子文件,因为我现在无法在没有成员的情况下创建组织:
Organization.create!( name: "Fictious business",
address: Faker::Address.street_address,
city: Faker::Address.city,
website: Faker::Internet.url,
subscription: true,
subs_exp_date: Faker::Date.forward(365),
actioncode: 111,
members_attributes: [email: "help@example.com",
username: "helpzzzz",
password: "foobar",
password_confirmation: "foobar"])
然而上面的播种失败,报错信息:"ActiveRecord::RecordInvalid: Validation failed: User is not present"(参考def check_member
中定义的报错信息)。
有人知道我可能做错了什么吗?
更新: 看起来是其他原因造成了这个问题。在开发中,我对播种没有任何问题。然而,播种到 Heroku 是问题出现的时候。通过更改种子文件,我发现当输入 heroku run rake db:seed
时,它没有使用当前更新的种子文件进行播种(虽然它正在这样做,但正在开发中)。它使用旧的种子文件,其中第二部分 members_attributes
尚未包含。
这可能是什么原因造成的? Heroku 方面的问题?我也试过 heroku pg:reset DATABASE
、heroku run rake db:migrate
然后 heroku run rake db:seed
但它仍然使用旧的种子文件。
先创建成员,再创建组织:
member = Member.create!(email: ...)
Organization.create!(name: ..., members: [member])
关于 Heroku:您是否将最新的更改推送到 Heroku?
组织和成员这两个模型具有 1:many 关系。在
validate :check_member
private
def check_member
if members.empty?
errors.add(:base, 'User is not present')
end
end
因此,如果还创建了该组织的成员,它只会创建一个新组织。我相应地调整了我的种子文件,因为我现在无法在没有成员的情况下创建组织:
Organization.create!( name: "Fictious business",
address: Faker::Address.street_address,
city: Faker::Address.city,
website: Faker::Internet.url,
subscription: true,
subs_exp_date: Faker::Date.forward(365),
actioncode: 111,
members_attributes: [email: "help@example.com",
username: "helpzzzz",
password: "foobar",
password_confirmation: "foobar"])
然而上面的播种失败,报错信息:"ActiveRecord::RecordInvalid: Validation failed: User is not present"(参考def check_member
中定义的报错信息)。
有人知道我可能做错了什么吗?
更新: 看起来是其他原因造成了这个问题。在开发中,我对播种没有任何问题。然而,播种到 Heroku 是问题出现的时候。通过更改种子文件,我发现当输入 heroku run rake db:seed
时,它没有使用当前更新的种子文件进行播种(虽然它正在这样做,但正在开发中)。它使用旧的种子文件,其中第二部分 members_attributes
尚未包含。
这可能是什么原因造成的? Heroku 方面的问题?我也试过 heroku pg:reset DATABASE
、heroku run rake db:migrate
然后 heroku run rake db:seed
但它仍然使用旧的种子文件。
先创建成员,再创建组织:
member = Member.create!(email: ...)
Organization.create!(name: ..., members: [member])
关于 Heroku:您是否将最新的更改推送到 Heroku?