Рельсы 5: Как я могу направить приборы на другие приборы? - PullRequest
0 голосов
/ 22 февраля 2019

Я три модели Comment, User и Project.Project и Comment должны указывать на другие объекты, чтобы быть действительными.Например, комментарий должен указывать на автора (пользователя) и проект.

Связанные файлы приборов выглядят так:

# comments.yml
test_comment:
  author: users(:test_user)
  project: projects(:test_project)

# users.yml
test_user:
  name: 'test user'

# projects.yml
test_project:
  name: 'Test'
  description: 'This is a test'
  owner: users(:test_user)

Однако я обнаружил, что мои приборывероятно настроены неправильно.Rails возвращает false, если я пытаюсь сохранить комментарий:

assert_equal true, comments(:test_comment)
#=> false

Я вижу, что существуют внешние ключи для проекта и автора:

=> #<Comment:0x00007f9b1661f3d8
 id: 137725605,
 body: "",
 project_id: 745075726,
 author_id: "31ceee04-5307-5059-91db-0dc2068a780c",
 created_at: Fri, 22 Feb 2019 13:17:58 UTC +00:00,
 updated_at: Fri, 22 Feb 2019 13:17:58 UTC +00:00>

Но когда я их опрашиваюRails возвращает nil.

> comments(:test_comment).author
=> nil

> comments(:test_comment).project
=> nil

Я ожидал, что один вернет users(:test_user), а другой вернет projects(:test_project).Я подумал, что, возможно, мне нужно использовать ERB в моем yaml:

test_comment:
  author: <%= users(:test_user) %>
  project: <%= projects(:test_project) %>

Но эти результаты - поток ошибок при запуске моих тестов:

NoMethodError: undefined method `users' for #<#<Class:0x00007f9b17692ff8>:0x00007f9b17692dc8>

Что мне нужно сделатьуказать светильники на другие светильники?Это можно сделать?Что я сделал не так?

1 Ответ

0 голосов
/ 22 февраля 2019

В руководстве Rails по тестированию с приборами YAML вы можете видеть, что вам не нужно users(:test_user) для ссылки на какой-либо другой объект.Вместо этого вы можете просто написать test_user:

# comments.yml
test_comment:
  author: test_user
  project: test_project

# users.yml
test_user:
  name: 'test user'

# projects.yml
test_project:
  name: 'Test'
  description: 'This is a test'
  owner: test_user

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...