在轨道固定装置上的红宝石中自动关联

Ton*_*ony 18 ruby ruby-on-rails fixtures

本文所述,我在fixture中使用自动关联.例如,如果某个区域对象具有国家/地区ID,而不是执行"country_id":1,则执行"country":"USA"."USA"是我的countries.yml文件中的标签,因此灯具知道如何处理这个问题.但是,这仅在您没有为countries对象指定ID值时才有效.所以我不能将美国的ID指定为1.但如果我不将它指定为1,它最终会成为一些大值8974343 ...这有点奇怪.有没有办法让灯具自动生成不是超高的id?....或者这样可以吗?

小智 24

这是您获得夹具标签的自动生成ID的方法.

Fixtures.identify(:reginald)
Run Code Online (Sandbox Code Playgroud)

  • 由于这篇SO文章给了我很多帮助,我想给出Rails 4.1.0.rc1的更新:<%= ActiveRecord :: FixtureSet.identify(:reginald)%> (13认同)

Don*_*rve 22

阅读API文档,这正是自动生成的灯具应该如何表现 - 如果您想提前获得灯具的特定ID值,您可能应该自己分配它.

如果没有,那么,从API文档:

The generated ID for a given label is constant, so we can discover any fixture‘s ID without loading anything, as long as we know the label.
Run Code Online (Sandbox Code Playgroud)


Edo*_*Edo 16

由于我没有足够的声誉来评论,这是实际的Rails 4.1文档:

http://edgeapi.rubyonrails.org/classes/ActiveRecord/FixtureSet.html#class-ActiveRecord::FixtureSet-label-Fixture+label+interpolation

在Fixture标签插值下:

monkey_id: <%= ActiveRecord::FixtureSet.identify(:reginald) %>
pirate_id: <%= ActiveRecord::FixtureSet.identify(:george) %>
Run Code Online (Sandbox Code Playgroud)