Ruby on rails 为什么在Rails模型中赋值时需要使用self?
如果我在Rails中有一个类:Ruby on rails 为什么在Rails模型中赋值时需要使用self?,ruby-on-rails,ruby,Ruby On Rails,Ruby,如果我在Rails中有一个类: class Ticket < ActiveRecord::Base def update_status return if status == 'sold' return unless reserved_until.nil? || reserved_until.past? self.status = 'open' end end classticket 为了更深入地阅读,这是一个很好的博客,把它说得很清楚 哦,好吧,这完全有
class Ticket < ActiveRecord::Base
def update_status
return if status == 'sold'
return unless reserved_until.nil? || reserved_until.past?
self.status = 'open'
end
end
classticket
如果
status
和reserved\u until
是Ticket
模型数据库中的字段,为什么我在赋值时只需要使用self
?每当你想在self上调用setter方法时,你必须写self.status=“open”。如果只写status=“open”,ruby解析器会将其识别为变量赋值,并从现在起将status视为局部变量。为了让解析器意识到,您希望调用setter方法,而不是分配局部变量,您必须编写obj.status=“open”,因此,如果对象是self,self.status=“open”,因为如果您执行status='open'
操作,您将创建一个名为status
的新局部变量。这与Rails无关。这就是Ruby解释器如何评估代码的问题。这里接受的答案很好地解释了它。->
为了更深入地阅读,这是一个很好的博客,把它说得很清楚 哦,好吧,这完全有道理。谢谢