Sam*_*son 1 ruby oop ruby-on-rails
我有以下代码可以工作,但我有点混淆为什么.
before_save :generate_slug
def generate_slug
self.slug = [id, title.to_url].join('-')
end
Run Code Online (Sandbox Code Playgroud)
我的印象是,self在模型方法上使用将是一个Class方法,而这些信息显然被保存到实例中,这是正确的吗?
如果我删除self从self.slug方法不起作用,slug是nil.
所以,如果我需要self.slug工作方法应该使用selfon self.id&self.title.to_url以及?
self 在这种情况下(在实例方法中)指的是实际的实例对象.
self 在方法名称中(但是)表示该方法是一个Class方法.
self.如果您指的是属性,则它是可选的,但在分配属性时是必需的.
slug = [id, title.to_url].join('-')
Run Code Online (Sandbox Code Playgroud)
在实例方法中创建一个新的局部变量
self.slug = [id, title.to_url].join('-')
Run Code Online (Sandbox Code Playgroud)
更新对象的slug属性.
你不需要理由self的id或者title是因为他们没有被赋值,只是访问,所以解释明白它必须得到模型属性.
| 归档时间: |
|
| 查看次数: |
81 次 |
| 最近记录: |