2014-03-25 76 views
0

所以,我正在进行一个项目,我不知道是什么。确实在这方面:在这种情况下,自己做了什么?

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

我明白高清self.method做什么,因为它是一个类的方法,但它不是如何上面使用。

为什么有人会像上面的上下文一样使用self.user_id,那是干什么的?我的猜测是,自我指的是current_user?

请帮我解决这个问题,

谢谢!

回答

1

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

+0

所以在这种情况下,它指的是一个Event对象的实例。因为它正在使用Event.rb模型进行调用。我想我明白了吗?干杯! – user3399101

3

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

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

  1. 比@user_id不同的是,和/或因为这是标记的Rails,...
  2. ...不是属性访问不同“原始”通过任何基础机制,如attributes[sym],绕过生成或您自己的访问器。

难道是显着的区别?这真的取决于。下注是将持久字段访问器加上self作为前缀,以确保您获得了自己的想法,尤其是在您覆盖任何访问者时。

我不总是这样做,当它不是一个任务,但有一个相关的风险。

0

.self正在接受它被调用的对象。

+0

干杯!它不是默认自动引用该对象 - 因为代码是用Event.rb模型编写的? – user3399101

+0

@ user3399101是的。但是你必须确保你正在调用你真正认为你的方法,这就是为什么我评论了持久属性。 –

+0

了解,谢谢。 +1 – user3399101

3

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

相关问题