首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5:如何将fixture指向其他fixture?

Rails 5:如何将fixture指向其他fixture?
EN

Stack Overflow用户
提问于 2019-02-22 21:31:01
回答 1查看 52关注 0票数 1

我有三个型号:CommentUserProjectProjectComment需要指向其他对象才能有效。例如,注释需要指向作者(用户)和项目。

关联的fixture文件如下所示:

代码语言:javascript
复制
# 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)

然而,我发现我的fixture可能设置得不正确。如果我尝试保存注释,Rails将返回false

代码语言:javascript
复制
assert_equal true, comments(:test_comment)
#=> false

我可以看到有一个项目和作者的外键:

代码语言:javascript
复制
=> #<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

代码语言:javascript
复制
> comments(:test_comment).author
=> nil

> comments(:test_comment).project
=> nil

我预计其中一个会返回users(:test_user),另一个会返回projects(:test_project)。我想也许我需要在我的yaml中使用ERB:

代码语言:javascript
复制
test_comment:
  author: <%= users(:test_user) %>
  project: <%= projects(:test_project) %>

但是当我运行我的测试时,结果是一个错误流:

代码语言:javascript
复制
NoMethodError: undefined method `users' for #<#<Class:0x00007f9b17692ff8>:0x00007f9b17692dc8>

要将装置指向其他装置,我需要做些什么?这是可以做到的吗?我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-22 23:21:26

Rails guide on Testing with YAML fixtures中,您可以看到不需要users(:test_user)来引用其他对象。相反,您可以简单地编写test_user

代码语言:javascript
复制
# 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

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54828231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档