【发布时间】:2018-07-06 01:43:01
【问题描述】:
我有一个函数调用其他返回对象的函数。 我尝试使用这种代码格式附加这些函数的返回值:
在我的model:
def get_cinfo(id)
return Client.find(id)
end
def get_caddress(id)
return Client.find(id).addresses
end
def get_cpolicies(id)
return Client.find(id).policies
end
def get_ccontactinfo(id)
return Client.find(id).contact_informations
end
def generate_client(id)
client = Array.new
client << get_cinfo(id) << get_caddress(id) << get_ccontactinfo(id)
end
在哪里: get_cinfo 、 get_caddress 和 get_ccontactinfo 是返回单个或两个实例的函数
产生的错误:[get_cinfo...] 变量未定义。
为什么会这样?附加到数组中是否不允许直接调用函数?
编辑:我尝试将self. 添加到每个函数中并且它有效。不过,我想知道,如果我不想将 self 添加到该函数以使其保持受保护状态-无论如何,除了在该特定函数中调用这些函数之外,我不打算(还)直接出于任何其他原因调用它答:
【问题讨论】:
-
您将此代码放在哪里?模式、控制器还是其他地方?
-
.self 如果你作为类方法调用。
-
@iGian 嗨,是的,这个代码在模型中
-
您似乎将这些定义为
Client模型中的实例方法。如果您想像Client.generate_client(42)那样称呼它们,则必须将它们定义为类方法(有时称为静态方法)。你可以写def self.get_cinfo(id), ...,def self.generate_client(id)。这就是你想要的吗? -
此外,如果您在
generate_client的结果中混合了多种数据类型/模型,您应该考虑不使用数组而是使用哈希 - 在那里您可以正确命名属性而不必依赖根据您输入信息的顺序。
标签: ruby-on-rails ruby ruby-on-rails-3