在 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
,因为 dup
是 Object
的一种方法,因此在当前上下文中可用作有效标识符:
def repost
repost_pin = dup
repost_pin.save
end
也就是说,显式使用 self
不是错误,例如,标记您打算使用对象的属性或方法。 Ruby style guide 不过不推荐。
我正在尝试在我的应用程序中重新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
,因为 dup
是 Object
的一种方法,因此在当前上下文中可用作有效标识符:
def repost
repost_pin = dup
repost_pin.save
end
也就是说,显式使用 self
不是错误,例如,标记您打算使用对象的属性或方法。 Ruby style guide 不过不推荐。