## 友好的属性:一种用于简洁数据定义的 Ruby 模式
RailsBilling 的作者,一个用于 Stripe 集成的 Rails gem,详细介绍了一种名为“友好的属性”的新模式,它源于在定义订阅计划时重复代码的挫败感。 最初,创建具有不同名称、间隔和金额的计划需要多行代码,作者使用基于哈希的结构将此过程简化为更易读的一行:`Billing::Plan.find_or_create_all_by_attrs!(1.month => {standard: 10, pro: 50, enterprise: 100}, 1.year => {standard: 100, pro: 500, enterprise: 1000})`。
这种模式通过智能地将各种结构(哈希、数组、单个值)转换为标准的键值属性来简化数据输入。 类型用于推断含义——整数变为金额,符号变为名称,持续时间变为间隔。 它具有灵活性,允许以任何顺序排列参数,甚至允许部分定义(例如,`billing_plan :pro`)。
除了计划创建之外,“友好的属性”在测试和控制台交互中也证明了其用处。 虽然不适合像 JSON 这样的数据存储格式,但它在需要手动数据输入或代码简洁性的场景中表现出色,体现了 Ruby 专注于人类可读、令人愉悦的代码。 作者分享了一个将该模式应用于物联网应用程序访问控制的概念性示例,突出了其在计费之外的潜力。