【问题标题】:How self[:name] works railsself[:name] 的工作原理
【发布时间】:2016-03-19 02:53:53
【问题描述】:

我在我的用户模型中创建了一个阅读器方法

def name
self[:name]
end

我很难理解 self[:name]
看起来我正在使用 Hash
中的键访问值,但据我所知,它不是 Hash。

我也尝试在 ruby​​ 中创建类来模拟这一点,但无法让它们工作,所以我不确定这是我不理解的 ruby​​ 还是 rails 的东西。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord


    【解决方案1】:

    ActiveRecord 提供 [] method:

    [](attr_name)
    返回attr_name标识的属性值,经过类型转换...

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

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

    class C
      def [](k)
        # do whatever you want
      end
    end
    c = C.new
    c[:pancakes]
    

    ActiveRecord 用于数据,或多或少是由关系数据库支持的哈希,所以说model[:attribute_name] 是相当自然的。因此存在[] 方法。

    【讨论】:

      猜你喜欢
      • 2019-01-24
      • 2021-03-20
      • 2011-10-26
      • 2017-12-02
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多