今晚与我的一位同事就Rails中的方法vs属性进行了辩论。我发誓我以前见过这个,除非我疯了。下面是一个例子:方法vs属性Rails
我们有一个用户模型,我们希望在保存记录之前确定我们有名字和姓氏。我讨厌回调,但对于这个例子,我们假设它是在before_save回调中。
class User
before_save :set_first_last
def set_first_last
first_name if self.first_name.blank?
last_name if self.last_name.blank?
end
def first_name
self.first_name = self.name.split(" ").first
end
def last_name
self.last_name = self.name.split(" ").last
end
end
所以,我很好奇,如果方法“set_first_last”的名字被调用,它看到用户的属性,如first_name是空白的,它会调用方法“FIRST_NAME”,正确吗?用户的属性first_name与名为“first_name”的方法不同。因此,名为“first_name”的用户对象上的属性与Rails中名为“first_name”的用户类上的方法不同,对吗?这将像一个类级别的方法vs实例方法?只是想确定我是正确的,而且我正确地解释了这一点。
感谢
--Mike
当您执行'@ user.first_name'时,您肯定会调用名为'first_name'的方法(然后调用read_attribute) –
您是绝对正确的,Frederick。尽管如此,我还是试图将此归咎于语言学,而不必解释发生的整个过程。我认为迈克只是在寻找快速验证。不过谢谢您的进一步澄清。 –