Rails備品の複数のYAMLデフォルト


あなたは、あなたが使うことができるということを知っていますYAML defaults in your fixtures 共通の属性値を抽出し、フィクスチャを読みやすくする.
DEFAULTS: &DEFAULTS
  created_on: <%= 3.weeks.ago.to_s(:db) %>

first:
  name: Smurf
  <<: *DEFAULTS

second:
  name: Fraggle
  <<: *DEFAULTS
複数のデフォルトの設定を使用する場合はどうすればよいですか?

古い方法-デフォルト
Railsの例では、ラベルとアンカー/エイリアスの両方に「デフォルト」を使用するので、ちょっと混乱していますが、ここでは複数のデフォルトを扱う方法を示します.
DEFAULTS: &decisions
  icon: 🧠
  name: Decisions

DEFAULTS: &help
  icon: 👋
  name: Help

founders_decisions:
  team: founders
  <<: *decisions

founders_help_requests:
  team: founders
  <<: *help
この方法を理解するには、2つのことを知る必要があります.

  • The Rails docs どのように多くの「デフォルト」ラベルがあるかは問題ではありません.同じラベルを使っていても上書きされません.

    Any fixture labeled “DEFAULTS” is safely ignored



  • The YAML spec エイリアシング機能の説明

    Repeated nodes (objects) are first identified by an anchor (marked with the ampersand - “&”), and are then aliased (referenced with an asterisk - “*”) thereafter.



  • エッジレールの道
    それをするもう一つの方法がありますEdge Rails . 無視されるべきフィクスチャを指定することができます.
    このような例を書き換えることができます.
    _fixture:
      ignore:
        - decisions
        - help
    
    decisions: &decisions
      icon: 🧠
      name: Decisions
    
    help: &help
      icon: 👋
      name: Help
    
    founders_decisions:
      team: founders
      <<: *decisions
    
    founders_help_requests:
      team: founders
      <<: *help
    

    どちらを使いましょうか.
    Rails 6.0.3.2以降を使用している場合は、とにかく選択肢はありません.しかし、そのときでさえ、アンカー/エイリアスがラベルを映し出すので、エッジオプションがおもしろい間、私は2つの理由のために「古い方法」に固執します
  • それは以下のコードです(あなたは、ザンフィクスチャブロックを書く必要はありません)
  • デフォルトのラベルは、スポットと明示的に簡単です.あなたはDECISION_DEFAULTS: &decisions の代わりにdecisions: &decisions しかし、ラベルは本当に役に立ちません、そして、もう一度、あなたがちょうどそれより多くのコードを書いているならばDEFAULTS: &decisions