夹具中erb部件内的评估$ LABEL

use*_*316 6 yaml ruby-on-rails fixtures

寻找一种干燥夹具的方法。假设我们有一些data.yml。有一部分,可以从$ LABEL引用。这是一个例子:

DEFAULTS: &DEFAULTS
  state: $LABEL
  score: 99
one:
  <<: *DEFAULTS
  uuid: <%= ActiveRecord::FixtureSet.identify(:one, :uuid) %>
two:
  <<: *DEFAULTS
  uuid: <%= ActiveRecord::FixtureSet.identify(:two, :uuid) %>
Run Code Online (Sandbox Code Playgroud)

有什么办法可以干燥它。我想要这样的东西:

DEFAULTS: &DEFAULTS
  state: $LABEL
  score: 99
  uuid: <%= ActiveRecord::FixtureSet.identify($LABEL, :uuid) %>
one:
  <<: *DEFAULTS
two:
  <<: *DEFAULTS
Run Code Online (Sandbox Code Playgroud)

但这是不可能的,因为此处未评估$ LABEL。有什么建议么?

Pel*_*ted 0

我一直在努力解决同样的问题,并且真的不想仅仅在少数情况下才切换到工厂,这会有所帮助。

话虽这么说,看起来 uuid 不是您的主键,是这样吗?如果您能够将 uuid 设置为主键(我们现在在 Postgres 中这样做),那么实际上不需要您所做的事情,因为 Rails 将正确识别 id 上的关联。您可以尝试在模型类本身上设置primary_key来使用 uuid 列,因为固定装置会内省,这应该可以工作,并且避免需要评估 $LABEL 并将其干燥。