Trailblazer Representable Change 属性 名称可变

Trailblazer Representable Change Property Name with Variable

我想传入一个将用作 属性 名称的字符串变量。

例如,如果我有变量 property_name,其中包含一个字符串,我想做这样的事情:

property :property_name, type: String, getter: ->(_) { "sample text" }

和 属性 名称会根据我在变量中包含的文本而改变。

这样的事情可能吗?如果是这样,这样做的语法是什么?

感谢您的帮助!

我发现最简单的方法是使用 :if 选项。

例如:

property :name1, type: String, if: ->(_) { property_name == 'name1' }, getter: (_) { "sample text" }
property :name2, type: String, if: ->(_) { property_name == 'name2' }, getter: (_) { "sample text" }

上面的代码允许我传入一个变量property_name。如果我将 property_name 的值设置为 "name1",那么将呈现第一个 属性 语句。如果我将 property_name 设置为 "name2",则将呈现第二个 属性 语句。