Rails 4 - 通用 alias_attribute
Rails 4 - Generic alias_attribute
我正在尝试使某些模型属性通用 alias_attribute。
由于我需要在数据库中保留字段的原始名称,因此我希望使属性更具可读性。
例如:GenericDataBaseColumn #=> generic_data_base_column
到目前为止,这是我得到的,但没有按预期工作:
self.attribute_names.
each { |attr| alias_attribute attr.split(/(?=[A-Z])/).
join("_").downcase.to_sym, :attr }
我正在使用 alias_attribute
因为我正在使用一些我收到的字段 JSON 并序列化它们,所以我想保留在未来只需进行迁移。
我问这个是因为我已经研究过了,唯一类似的问题是哪个还没有回答。
How to create dynamic attribute aliases in rails?
我仍然不确定这是否有可能实现。
谢谢
显然我对应该如何调用属性有误解。
而不是 self.attribute_names
应该是 attribute_names
因为该方法应该只被实例化的元素调用。
此外,在第一次修复之后,我不得不跳过所有同名属性,因为这会导致 SystemStackError (stack level too deep)
最终的实现应该是这样的:
# Defining alias attributes
attribute_names.each do |attr|
next if attr.blank? || (attr == attr.underscore)
alias_attribute attr.underscore.to_sym, attr.to_sym
end
希望这对其他人有帮助。
另外,如果有人有答案,请随时 post 它。谢谢
我正在尝试使某些模型属性通用 alias_attribute。
由于我需要在数据库中保留字段的原始名称,因此我希望使属性更具可读性。
例如:GenericDataBaseColumn #=> generic_data_base_column
到目前为止,这是我得到的,但没有按预期工作:
self.attribute_names.
each { |attr| alias_attribute attr.split(/(?=[A-Z])/).
join("_").downcase.to_sym, :attr }
我正在使用 alias_attribute
因为我正在使用一些我收到的字段 JSON 并序列化它们,所以我想保留在未来只需进行迁移。
我问这个是因为我已经研究过了,唯一类似的问题是哪个还没有回答。
How to create dynamic attribute aliases in rails?
我仍然不确定这是否有可能实现。
谢谢
显然我对应该如何调用属性有误解。
而不是 self.attribute_names
应该是 attribute_names
因为该方法应该只被实例化的元素调用。
此外,在第一次修复之后,我不得不跳过所有同名属性,因为这会导致 SystemStackError (stack level too deep)
最终的实现应该是这样的:
# Defining alias attributes
attribute_names.each do |attr|
next if attr.blank? || (attr == attr.underscore)
alias_attribute attr.underscore.to_sym, attr.to_sym
end
希望这对其他人有帮助。 另外,如果有人有答案,请随时 post 它。谢谢