Как мне связать пользовательский внешний ключ с моим исходным кодом Ruby on Rails?

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Я «детский программист», создаю новое приложение Rails и хотел бы добавить некоторые исходные данные. Приложение будет отображать разные прически, принадлежащие пользователю, что означает, что для каждой прически требуется идентификатор пользователя. В моем исходном файле я создал пользователей и прически, однако, когда я запускаю rails: dbseed в консоли, это выдает ошибку:

 "NameError: undefined local variable or method `user' for main:Object
Did you mean?  users"
  

Когда я запускаю rails c, я вижу, что пользователи созданы, а мои прически — нет. Пожалуйста, кто-нибудь может мне помочь и объяснить, почему это так? Спасибо

ИСХОДНЫЙ ФАЙЛ:

 Hairstyle.destroy_all

User.destroy_all

users = [
  {
    first_name: 'test',
    last_name: 'Inniss',
    email: 'angela@hair.com',
    password: '123456' 
  },   
  { 
    first_name: 'test2',
    last_name: 'Clarke',
    email: 'aaron@hair.com',
    password: '123456'
  }
]

User.create!(users)

user.save

hairstyles = [
  {
    name: 'Single Braids',
    description: 'Really easy to maintain',
    category: 'Braids',
    video_url: 'www.google.com',
    photo_url: 'https://images.unsplash.com/photo-1533233336213-b3a32825c689?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=1049amp;q=80',
    user_id: User.first
  },
  {
    name: 'Crochets',
    description: 'Protective style',
    category: 'Braids',
    video_url: 'www.google.com',
    photo_url: 'https://images.unsplash.com/photo-1533233336213-b3a32825c689?ixlib=rb-1.2.1amp;ixid=eyJhcHBfaWQiOjEyMDd9amp;auto=formatamp;fit=cropamp;w=1049amp;q=80',
    user_id: User.first
  }
]

Hairstyle.create!(hairstyles)
  

Комментарии:

1. Итак, вы создаете много пользователей. На какой из них следует ссылаться user из user.save ? В любом случае это избыточно, create! либо создает пользователей, либо нет. Ни у одного из этих пользователей нет ожидающих изменений.

Ответ №1:

Просто удалите эту строку

 user.save
  

В этом нет смысла, тебе это не нужно.

Комментарии:

1. Привет @spickermann Я удалил user.save сейчас, и у меня нет никаких ошибок, что, однако, здорово, когда я ввожу «rails c» в консоль, а затем делаю прическу. все, что я вижу, это пустой массив [ ]. Должен ли я не видеть 2 прически, которые я создал в своем исходном коде? Заранее спасибо

2. @AngelaInniss а пользователи там есть?

3. Привет @Ursus Да, пользователи есть, что странно. Я продолжаю запускать rails db: seed, и пользователи каждый раз стираются и создаются. Может ли это быть как-то связано с моей Моделью?

4. Одна ошибка заключается в том, что вы назначаете пользователя, весь объект, user_id . Либо user_id: User.first.id , либо user: User.first .

5. Привет @ursus Я пробовал оба, и это все еще не работает. У меня есть пользователи и нет причесок, когда я набираю rails c, Hairstyle.all. Это так странно, пожалуйста, дайте мне знать, если вы хотите увидеть какие-либо другие файлы / у вас есть еще идеи. Я совершенно застрял на этом этапе: S