Ruby on rails self[:name]如何在rails中工作

Ruby on rails self[:name]如何在rails中工作,ruby-on-rails,ruby,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby,Ruby On Rails 4,Rails Activerecord,我在我的用户模型中创建了一个reader方法 def name self[:name] end 我很难理解自己[:姓名] 看起来我是在用散列中的一个键访问一个值,但从我能看出它不是散列 我还尝试在ruby中创建类来模拟这一点,但无法让它们正常工作,因此我不确定这是ruby还是rails,我不理解。ActiveRecord提供了一个: [](属性名称) 返回由attr\u name在类型转换后标识的属性的值 所以说self[:name]只是访问模型的name属性的一种迂回方式 []与Ruby中的

我在我的用户模型中创建了一个reader方法

def name
self[:name]
end
我很难理解自己[:姓名]
看起来我是在用散列中的一个键访问一个值
,但从我能看出它不是散列

我还尝试在ruby中创建类来模拟这一点,但无法让它们正常工作,因此我不确定这是ruby还是rails,我不理解。

ActiveRecord提供了一个:

[](属性名称)

返回由
attr\u name
在类型转换后标识的属性的值

所以说
self[:name]
只是访问模型的
name
属性的一种迂回方式

[]
与Ruby中的任何其他方法一样,您可以在任何想要的类中定义自己的方法:

class C
  def [](k)
    # do whatever you want
  end
end
c = C.new
c[:pancakes]
ActiveRecord与数据一起使用,这些数据或多或少是一个由关系数据库支持的散列,因此说
model[:attribute\u name]
是相当自然的。因此
[]
方法的存在。

ActiveRecord提供了一个:

[](属性名称)

返回由
attr\u name
在类型转换后标识的属性的值

所以说
self[:name]
只是访问模型的
name
属性的一种迂回方式

[]
与Ruby中的任何其他方法一样,您可以在任何想要的类中定义自己的方法:

class C
  def [](k)
    # do whatever you want
  end
end
c = C.new
c[:pancakes]
ActiveRecord使用的数据或多或少是一个由关系数据库支持的哈希,因此说
model[:attribute\u name]
是相当自然的。因此存在
[]
方法