无法播种:db与关联

时间:2015-05-12 14:22:18

标签: ruby-on-rails ruby ruby-on-rails-4 seeding

两个模型,组织和成员,有1:多关系。基于earlier question,我添加到我的组织模型文件中:

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 not not present”(引用def check_member中定义的错误消息)。

有没有人知道我可能做错了什么?

更新:看起来它是创造问题的其他因素。在开发中我对播种没有任何问题。然而,当问题出现时,播种到Heroku。通过更改种子文件,我发现在输入heroku run rake db:seed时,它没有播种当前更新的种子文件(在开发过程中它正在这样做)。它使用旧种子文件,其中第二部分members_attributes尚未包括在内。

这可能是什么原因? Heroku的一个问题?我还尝试了heroku pg:reset DATABASEheroku run rake db:migrate然后heroku run rake db:seed,但它仍在使用旧的种子文件。

1 个答案:

答案 0 :(得分:2)

首先创建成员,然后创建组织:

member = Member.create!(email: ...)
Organization.create!(name: ..., members: [member])

关于Heroku:您是否将最新的更改推送到了Heroku?