如何获得别名attributtes的哈希值

时间:2018-02-03 04:31:08

标签: ruby-on-rails ruby

我在用户模型上有以下别名:

alias_attribute :firstName, :first_name
alias_attribute :lastName, :last_name

如何将带别名的哈希作为键,例如:

user.alias_attributes
{ 
  firstName: "Joe",
  lastName: "Smith"
}

1 个答案:

答案 0 :(得分:0)

如果您查看ActiveModel::AttributeMethods sourcealias_attribute来自哪里),您会看到:

included do
  class_attribute :attribute_aliases, :attribute_method_matchers, instance_writer: false
  self.attribute_aliases = {}
  #...
end

然后later

def alias_attribute(new_name, old_name)
  self.attribute_aliases = attribute_aliases.merge(new_name.to_s => old_name.to_s)
  #...
end

因此您可以查看User.attribute_aliases以获取您之后的哈希值。

当然,这不是文档化界面的一部分,因此它可能会也可能不会继续工作;如果您在应用程序中使用此功能,那么您应该在测试套件中包含一些测试,以便您至少知道它是否发生了变化。