在不使用标签 rails 的情况下引用另一个夹具

Reference another fixture without using label rails

我有一个名为 Region 和 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: ?????

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

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

# 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,但无法通过您的 table 持有 json 而不是另一个模型的单个 ID 来解决。

就我个人而言,我会在 regions.yml 上预先定义您的 ID,然后直接在 admins.yml 中引用它们。这将有助于确保您知道 ID,并且您拥有准确的数据结构来测试。

问了同事,得到了答案。这将起作用:

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

rails 将在到达此点时加载 regions.yml。