在 ruby on rails 中添加 self 是否正确

is it correct to add self like in this case in ruby on rails

我正在尝试在我的应用程序中重新post a post...我在 Youtube 视频中看到此代码..

class Pin < ActiveRecord::Base
validates_presence_of :bio
belongs_to :user

mount_uploader :image, PictureUploader

def repost
    repost_pin = self.dup
    repost_pin.save
end

在这里使用 self 是否正确?是否可以更改为:

def repost
    dub
end

最后 repost 将在实例变量上调用 @post(@post = Post.find(params[:id]) ) .. ..也许我在这里误解了什么...有人可以帮忙吗?

当从上下文中清楚地知道您正在读取当前实例的属性或调用其方法时,您可以跳过 self

写的时候要注意一点:

def write
  test = 'test'
end

将创建一个局部变量test,即使存在同名的属性。或者,这个:

def write
  self.test = 'test'
end

会将值分配给名为 test 的当前实例的属性。

在您的示例中,您可以跳过 self,因为 dupObject 的一种方法,因此在当前上下文中可用作有效标识符:

def repost
    repost_pin = dup
    repost_pin.save
end

也就是说,显式使用 self 不是错误,例如,标记您打算使用对象的属性或方法。 Ruby style guide 不过不推荐。