此问题基于another question of mine(谢天谢地回答)。
因此,如果在模型中我有这个:
def self.find_extended
person = Person.find(:first)
complete_name = person.firstname + ', ' + person.lastname
return person
end
如何在person对象中注入完整名称,以便在我的控制器/视图中我可以通过person.complete_name访问它?
感谢您的时间,
西尔维乌
答案 0 :(得分:6)
我认为最好的方法是在Person类中创建complete_name属性:
def complete_name
firstname + ', ' + lastname
end
答案 1 :(得分:2)
如果你要迭代很多记录,那么使用插值字符串将会提高内存效率。
def complete_name
"#{firstname}, #{lastname}"
end
使用String#+
连接字符串会在每一步创建String对象。换句话说,如果firstname
是'John'
而lastname
是'Doe'
,那么这些字符串中的每一个都将存在于内存中,需要在某些时候进行垃圾回收:{ {1}},'John'
,'Doe'
,最后是'John, '
。更不用说有三种方法调用而不是一种字符串插值,这在C语言中更有效地实现。
如果使用'John, Doe'
表示法,则可以避免创建#{}
字符串。在处理一个或两个记录时无关紧要,但在各种方法中使用的大型数据集中,它可以快速累加。
答案 2 :(得分:1)
您可以定义:
attr_accessor :complete_name
在人物模型中然后执行person.complete_name= person.firstname + ', ' + person.lastname
答案 3 :(得分:1)
另外,另一个快速说明。你不需要Ruby中的return语句。将返回您方法中的最后一个语句。