在这种情况下,自己做了什么?

时间:2014-03-25 20:03:48

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

所以,我正在研究一个项目,我不知道 self。在这个环境中做了什么:

  def owner_is?(user)
    self.user_id == user.id
  end

我理解def self.method的作用,因为它是一种类方法,但不是上面使用的方法。

为什么有人会在上面的上下文中使用self.user_id,这是做什么的?我的猜测是,self指的是current_user?

请帮我解决此问题,

谢谢!

4 个答案:

答案 0 :(得分:3)

self指的是您正在查看的任何内容的当前实例。

这里调用实例的user_id方法,可能是:

  1. 与@user_id不同,和/或因为这是标记为Rails,...
  2. ...与属性访问不同" raw"通过任何基础机制,如attributes[sym],绕过生成或自己的访问者。
  3. 这是显着的区别吗?这真的取决于。 最安全下注是使用self为持久字段访问者添加前缀,以确保您获得您认为自己的内容,特别是如果您覆盖任何这些访问者。

    如果不是作业,我并不总是这样做,但是存在相关的风险。

答案 1 :(得分:3)

self 是指模型的当前实例。它用于当前模型的调用方法和属性。

答案 2 :(得分:1)

这将引用调用此方法的模型实例。

答案 3 :(得分:0)

.self指的是它被调用的对象。