Ruby on rails self在这种情况下做了什么?

Ruby on rails self在这种情况下做了什么?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,所以,我正在做一个项目,我不知道自己在做什么。在这方面: def owner_is?(user) self.user_id == user.id end 我了解def self.method的功能,因为它是一个类方法,但不了解上面如何使用它 为什么有人会在上面的上下文中使用self.user_id,这是在做什么?我猜self指的是当前的用户 请帮我把这件事弄清楚 谢谢 这将引用调用此方法的模型实例。self引用您正在查看的任何对象的当前实例 在这里,它调用实例的user_id方

所以,我正在做一个项目,我不知道自己在做什么。在这方面:

  def owner_is?(user)
    self.user_id == user.id
  end
我了解def self.method的功能,因为它是一个类方法,但不了解上面如何使用它

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

请帮我把这件事弄清楚


谢谢

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

self引用您正在查看的任何对象的当前实例

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

与@user_id不同,和/或因为这是标记的Rails。。。 …不同于通过任何底层机制(如attributes[sym])访问原始属性,绕过生成的或您自己的访问器。 这是一个显著的区别吗?这要看情况而定。最安全的方法是使用self作为持久化字段访问器的前缀,以确保获得您认为的内容,特别是在覆盖任何这些访问器的情况下


当它不是赋值时,我并不总是这样做,但存在相关的风险。

self引用它所调用的对象。

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

因此,在本例中,它指的是事件对象的实例。正如Event.rb模型所调用的那样。我想我明白了?干杯干杯因为代码是在Event.rb model中编写的,所以默认情况下它不会自动引用对象吗?@user3399101是的。但是您必须确保您正在调用您实际认为是的方法,这就是为什么我对持久化属性进行了评论。