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

Ruby on rails 如何获取Rails fixture实例内容的散列?,ruby-on-rails,ruby,hash,fixtures,Ruby On Rails,Ruby,Hash,Fixtures,这是使用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是一个定义良好的模型,带有控制器方法。new,

这是使用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
是一个定义良好的模型,带有控制器方法
。new
,而
test\u Entry
是一个包含一些有效
Entry
实例的夹具。)

不幸的是,这不起作用,因为
条目(:test\u entry)
将是
条目
,而不是
条目接受的哈希。new

我知道我可以在相关测试中使用格式为
fixture\u objname.property
的表达式访问fixture属性,因为YAML中指定的内容将自动插入数据库并加载。问题是,我必须为我刚刚在YAML中指定的对象手动重新键入一堆属性名,这似乎很愚蠢

还说我可以通过向测试类添加
self.use_instanced_fixtures=true
来获得实际的模型实例。但是,似乎没有任何
instance\u方法
会以散列格式转储夹具的模型实例(
test\u条目
),以反馈到
.new
方法中


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

我相信您正在寻找类似于:

entries(:test_entry).attributes
entries(:test_entry).attributes.class # => Hash
如果需要,还可以删除属性:

entries(:admin).attributes.except("id")
希望这有帮助