Ruby rails关联上下文中的self关键字

Ruby rails关联上下文中的self关键字,ruby,Ruby,我正在学习rails教程,遇到了以下代码。我很难理解self关键字在这个上下文中的作用。据我所知,self关键字是一种创建属于其创建对象的类函数的方法,但我真的不明白这意味着什么 代码如下: class User < ActiveRecord::Base def feed end def following?(other_user) self.relationships.find_by(followed_id: other_user.id) end def follo

我正在学习rails教程,遇到了以下代码。我很难理解self关键字在这个上下文中的作用。据我所知,self关键字是一种创建属于其创建对象的类函数的方法,但我真的不明白这意味着什么

代码如下:

class User < ActiveRecord::Base

 def feed

 end

 def following?(other_user)
  self.relationships.find_by(followed_id: other_user.id)
 end

 def follow!(other_user)
  self.relationships.create!(followed_id: other_user.id)
 end

end
class用户

有人能给出一个相当直观的解释吗?我熟悉其他语言中的“this”关键字,但这看起来像rails的魔法。谢谢大家!

如果你熟悉“this”关键字,那么,“self”几乎完全相同,意思是“当前在手的对象”。在“普通”方法中,如您在示例中所示,这意味着“类的实例化”,在类方法中,这意味着“类对象本身”。您也可以将其理解为“my”,后跟“relationships”,因此“find in my relationships…”

这是一个Ruby,而不是Rails。因此,在这种情况下,relationships不是一个类方法,而是一个普通方法。如果是这种情况,您能将self应用于任何方法并将其与手头的类相关联吗?我想这与消息传递有关——我对这个概念还不是很熟悉。这确实是一种“正常”的方法。因此,您实际上是在将“关系”的信息传递给“自我”,作为对象本身,而不是对象的类。如果您想进一步了解“自我”,我建议您阅读以下文章: