[英]How can I get a hash of the contents of a Rails fixture instance?
这使用的是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_entry
是一个包含一些有效Entry
实例的装置。)
不幸的是,这不起作用,因为entries(:test_entry)
将是一个Entry
,而不是Entry.new
接受的Entry.new
。
我知道我可以在关联的测试中使用形式为fixture_objname.property
的表达式访问灯具属性,因为YAML中指定的任何内容都会自动插入数据库并加载。 问题在于,我必须为刚在YAML中指定的对象手动重新输入一堆属性名称,这似乎很愚蠢。
该文档还说,我可以通过在测试类中添加self.use_instantiated_fixtures = true
来获得实际的模型实例。 但是,似乎没有任何instance_methods
会以散列格式转储夹具的模型实例( test_entry
)以反馈给.new
方法。
有没有一种惯用的方式来获得我想要的东西,或者是一种更简单的方式?
我相信您正在寻找类似的东西:
entries(:test_entry).attributes
entries(:test_entry).attributes.class # => Hash
您还可以根据需要删除属性:
entries(:admin).attributes.except("id")
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.