将数据成员注入到对象
时间:2020-03-06 14:59:05 来源:igfitidea点击:
这个问题是基于我的另一个问题(感谢回答)。
所以如果在模型中我有这个:
def self.find_extended person = Person.find(:first) complete_name = person.firstname + ', ' + person.lastname return person end
如何在个人对象中注入完整名称,以便在我的控制器/视图中可以通过person.complete_name访问它?
感谢时间,
西尔维
解决方案
我们可以定义:
attr_accessor :complete_name
在人员模型中,然后执行person.complete_name = person.firstname +','+ person.lastname
我认为最好的方法是在Person类中创建complete_name属性:
def complete_name firstname + ', ' + lastname end
另外,另一个快速说明。我们不需要在Ruby中使用该return语句。方法中的最后一条语句将被返回。
如果要遍历大量记录,则使用插值字符串将更节省内存。
def complete_name "#{firstname}, #{lastname}" end
使用String#+
连接字符串会在每个步骤创建String对象。换句话说,如果firstname
是'John'
和lastname
是'Doe'
,那么这些字符串中的每一个都将存在于内存中,并且需要在某个时候进行垃圾回收:''John'`。 ," Doe"," John"和" John,Doe"。更不用说有3种方法调用而不是一种字符串内插,这在C语言中可以更有效地实现。
如果使用"#{}"表示法,则避免创建"'John,"字符串。处理一个或者两个记录无关紧要,但是在用于各种方法的大型数据集中,它可以快速累加。