将数据成员注入到对象
问题描述:
此问题是基于another question of mine(谢天谢地回答)。将数据成员注入到对象
因此,如果在一个模型我有这样的:
def self.find_extended
person = Person.find(:first)
complete_name = person.firstname + ', ' + person.lastname
return person
end
我怎样才能在人物对象在我的控制器/视图注入完整的名字,所以我可以通过person.complete_name访问它?
谢谢您的时间,
的Silviu
答
我认为要做到这一点的最好办法是在Person类中创建完整名称属性:
def complete_name
firstname + ', ' + lastname
end
答
您可以定义:
attr_accessor :complete_name
在人的模型,然后就去做person.complete_name= person.firstname + ', ' + person.lastname
答
另外,另一个快速笔记。你不需要Ruby中的那个return语句。您的方法中的最后一个语句将被返回。
答
如果您打算迭代大量记录,那么使用插值字符串将会提高内存效率。
def complete_name
"#{firstname}, #{lastname}"
end
使用String#+
连接字符串会在每个步骤创建String对象。换句话说,如果firstname
是'John'
和lastname
是'Doe'
,然后这些字符串将存在于内存中,需要进行垃圾收集的一些点:'John'
,'Doe'
,'John, '
,最后'John, Doe'
。更不用说,有三个方法调用,而不是一个字符串插值,它可以在C中更高效地实现。
如果使用#{}
表示法,则可以避免创建'John, '
字符串。在处理一个或两个记录时无关紧要,但是在使用各种方法使用的大型数据集中,它们可以快速加起来。
您的答案对我来说同样适用,但我发现IDBD的解决方案更加优雅 – 2008-10-01 17:25:08