1

私は現在RoRガイドを調べていますが、行き詰まっています...

「サンプルデータにフォロー/フォロワーの関係を追加します。」

動作するはずのコードは次のとおりです。sample_app/lib/task/sample_data.rake

namespace :db do
desc "Fill database with sample data"
task populate: :environment do
    make_users
    make_microposts
    make_relationships
  end
end

def make_users
 admin = User.create!(name:     "Example User2",
                     email:    "example2@railstutorial.org",
                     password: "foobar",
                     password_confirmation: "foobar")
admin.toggle!(:admin)
99.times do |n|
 name  = Faker::Name.name
 email = "example-#{n+1}@railstutorial.org"
 password  = "password"
 User.create!(name:     name,
              email:    email,
              password: password,
              password_confirmation: password)
  end
end

def make_microposts
  users = User.all(limit: 6)
  50.times do
    content = Faker::Lorem.sentence(5)
    users.each { |user| user.microposts.create!(content: content) }
  end
end

def make_relationships
  users = User.all
  user  = users.first
  followed_users = users[2..50]
  followers      = users[3..40]
  followed_users.each { |followed| user.follow!(followed) }
  followers.each      { |follower| follower.follow!(user) }
end

rake db:resetデータベースを問題なくリセットすると。

私がrake db:populateこれを述べるエラーが発生したとき:

 rake aborted!
 Validation failed: Follower can't be blank`

だから私は自分のデータベースをチェックしました、そして「関係」テーブルを除いてすべてのテーブルが移入されました..何か考えや提案はありますか?def making_relationships正確には、コードに問題があると確信しています。誰かがこれに対する解決策を持っていることを願っています。

-マーク

4

1 に答える 1

3

and ( )の.create!ようなモデルを呼び出しているので、前述のエラーをスローするモデルの1つです。UserMicropostuser.microposts

より具体的に回答できるように、これらのモデルのコードを投稿してください。

ただし、問題を自分でデバッグすることはできます。rails cプロジェクトのルートディレクトリにアクセスし、rakeタスクで試行しているのとまったく同じ属性を持つインスタンスを作成してみてください。

$ rails c

$ user = User.create!(name:     name,
                      email:    email,
                      password: password,
                      password_confirmation: password)

$ micropost = user.microposts.create!(content: "Hello, cruel world!")

# by this step you should already see some errors raised; if that's not sufficient,
# call the following methods to figure out what model suffers the validation error
user.errors.full_messages
micropost.errors.full_messages

とにかく、満たされていないのは検証です。シバンを使用してモデルを作成するときに渡される必要なすべての属性を渡していることを再確認してくださいcreate!。具体的には、どのモデルが存在する必要があるかを確認しますFollower(それが何であれ)。

于 2012-05-22T11:29:24.737 に答える