开拓者可代表的变更属性名称与变量

时间:2017-10-16 21:05:11

标签: ruby-on-rails trailblazer representable

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

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

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

并且属性名称会根据变量中的文本而改变。

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现最简单的方法是使用: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”,那么将呈现第二个属性语句。