Ruby on rails self[:name]如何在rails中工作
我在我的用户模型中创建了一个reader方法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中的
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]
是相当自然的。因此存在[]
方法