gpt4 book ai didi

ruby-on-rails - 如何获取 Rails fixture 实例内容的散列值?

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:45 26 4
gpt4 key购买 nike

这是使用 Rails 4.2.0、Ruby 2.2.0。

我想做的是使用 fixture 对象中包含的数据来验证在插入同一数据库之前是否捕获了重复项:

  test "identical entries should be impossible to create" do
dup_entry = Entry.new(entries(:test_entry))
assert_not dup_entry.save
end

(其中 Entry 是一个具有 Controller 方法的定义明确的模型 .new ,而 test_entry 是一个包含一些有效 Entry 实例的 fixture 。)

不幸的是,这不起作用,因为 entries(:test_entry)将是一个 Entry , 不是 Entry.new 接受的散列.

我知道我可以使用 fixture_objname.property 形式的表达式访问 fixture 属性在相关的测试中,因为 YAML 中指定的任何内容都将自动插入到数据库中并加载。这样做的问题是,我必须手动为我刚刚在 YAML 中指定的对象重新键入一堆属性名称,这看起来很愚蠢。

The documentation还说我可以通过添加 self.use_instantiated_fixtures = true 来获取实际的模型实例到测试类。但是,似乎没有任何 instance_methods这将以哈希格式转储出 fixture 的模型实例( test_entry )以反馈到 .new 中方法。

是否有一种惯用的方法来获得我想要的东西,或者有一种不同的、更简单的方法吗?

最佳答案

我相信您正在寻找类似的东西:

entries(:test_entry).attributes
entries(:test_entry).attributes.class # => Hash

如果需要,您还可以删除属性:

entries(:admin).attributes.except("id")

希望这对您有所帮助。

关于ruby-on-rails - 如何获取 Rails fixture 实例内容的散列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29313167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com