【发布时间】:2015-06-20 15:33:28
【问题描述】:
我正在 Rails 4.2.2 和 Ruby 2.2.2 中构建一个简单的资产管理器应用程序。在我的asset 模型中,我使用带有before_create 的回调来调用函数generate_asset_number,就像这样
def generate_asset_number
company = "AMS"
if Asset.count == 0
self.asset_number = "#{company}-00001"
else
last = Asset.last.asset_number
end
number = last.split('-')[1].to_i
number += 1
self.asset_number = company + '-' + "%05d" % number
end
end
如您所见,我将公司变量设置为字符串,评估 Asset.count 是否为 0,然后返回字符串“AMS-00001”,如果 Asset.count 不为 0,则我最后分配到 Asset.last.asset_number 拉取序列中的最后一个数字。
我被绊倒的地方是设置 number 变量以返回最后一个事件编号并对其调用 split 以提取数组的第二部分并转换为整数,以便我可以递增它。
当我从控制台运行它或尝试在视图中创建新记录时,我收到以下错误:
undefined methodsplit' for nil:NilClass`
我确定我的语法不正确,因为我更像是 Ruby Jr。
如果有人可以帮助解释我需要做些什么来重构和完成这项工作,我将不胜感激。如果您需要更多信息或我的问题不清楚,请告诉我。
【问题讨论】:
标签: ruby-on-rails ruby split