Ruby on rails 类语法,何时需要或不需要符号?
我有一个这样的模型类:Ruby on rails 类语法,何时需要或不需要符号?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个这样的模型类: attr_accessible :email, :firstname, :lastname, :phones_attributes validates :firstname, presence: true def name [firstname, lastname].join(' ') end 甚至在该模型中进行如下验证: attr_accessible :email, :firstname, :lastname, :phones_attribut
attr_accessible :email, :firstname, :lastname, :phones_attributes
validates :firstname, presence: true
def name
[firstname, lastname].join(' ')
end
甚至在该模型中进行如下验证:
attr_accessible :email, :firstname, :lastname, :phones_attributes
validates :firstname, presence: true
def name
[firstname, lastname].join(' ')
end
请注意,它们都在变量名之前使用“:”符号
但在这个模型中,我有一个方法如下:
attr_accessible :email, :firstname, :lastname, :phones_attributes
validates :firstname, presence: true
def name
[firstname, lastname].join(' ')
end
那么,为什么这次我们不需要在变量名之前键入“:”呢?有什么区别 您可以看到,您传递给
attr\u accessor
的实际上不是一个变量,而是一个变量的名称。变量的名称是符号,:name
是符号的文字语法。在name
方法中,实际上使用的是一个变量,而不仅仅是它的名称,因此,没有:
更详细地说,
attr\u accessor
从不直接使用变量。而是使用按名称获取变量的方法。因此,它需要的是名称,而不是变量。您可以看到,传递给属性访问器的内容实际上不是变量,而是变量的名称。变量的名称是符号,:name
是符号的文字语法。在name
方法中,实际上使用的是一个变量,而不仅仅是它的名称,因此,没有:
更详细地说,
attr\u accessor
从不直接使用变量。而是使用按名称获取变量的方法。因此,它需要的是名称,而不是变量。将符号视为简单的字符串,以“Rails的方式”表示某些内容。这与:
attr_accessible "email", "firstname", "lastname", "phones_attributes"
然而,在实例方法
name
中,firstname和lastname实际上被理解为model\u对象。firstname
,model\u对象。lastname
等。因此,没有冒号。将符号视为简单的字符串,以“Rails的方式”表示某物。这与:
attr_accessible "email", "firstname", "lastname", "phones_attributes"
然而,在实例方法
name
中,firstname和lastname实际上被理解为model\u对象。firstname
,model\u对象。lastname
等。因此,没有冒号。不完全相同,符号被插入,而字符串则不完全相同。不完全相同,符号被插入,而字符串则不被插入。