不使用标签导轨参考另一个夹具

时间:2016-11-22 22:51:12

标签: ruby-on-rails testing minitest fixture

我有一个名为Region and Admin的模型

# regions.yml 
one: 
  name: test
two:
  name: test2

# admins.yml 
one:  
  name: admin1
two: 
  name: admin2

admin.rb上的一列定义为json列(store_accessor: :region_ids)。如何在admins.yml上引用区域?

# admins.yml
one: 
  name: admin1
  region_ids: ?????

2 个答案:

答案 0 :(得分:1)

我问我的同事并得到了答案。这将有效:

# admins.yml
one: 
  region_ids: <%= Region.pluck(:id) %> 

rails会在到达这一点时加载regions.yml。

答案 1 :(得分:0)

这是使用erb获取各个区域的ID的更新答案。

这将创建结构json并查询数据库以获取第一个和第二个区域ID。当您运行测试时,这些将从regions.yml加载到DB中。

# admins.yml
one: 
  name: admin1
  region_ids: >
    [{"region_one_id":<%= Region.first.id.to_json.inspect %>},
    {"region_two_id":<%= Region.second.id.to_json.inspect %>}]

我查看了Fixture label interpolation来获取id,但是无法用你的表拿着json来代替另一个模型的单个id。

我个人会在你的regions.yml上预先定义你的id,然后在你的admins.yml中直接引用它们。这有助于确保您了解ID,并且您拥有准确测试的数据。