目前我有一个用户和一个资产表(postgres 后端),当用户创建一个新资产时,它会按预期填充资产 ID 1、2、3 等,根据我们当前的资产标记显示为 ###1方法。
作为资产管理系统的一部分,我们需要导入从当前系统导出的资产。我正在使用 roo 和 find_by_or_initialize 使用它们当前的 ID 创建这些资产。但是,当我去添加一个新资产时,它使用第一个空闲 id 并使用它而不是使用序列中的下一个。这不是问题,但现有管理系统中大约有 200 个丢失的数字,我目前想不出除了手动添加它们之外的解决方案。
例如,有没有办法让 id 不使用第一个空白;1、2、6、7、8、12?
这是资产的创建方法
def create
@asset = current_user.assets.build(params[:asset])
if @asset.save
redirect_to root_path
flash.now[:success] = "Asset created!"
else
render 'static_pages/home'
end
end
这是用于导入现有资产的方法
def self.import(file)
spreadsheet = open_spreadsheet(file)
header = spreadsheet.row(1)
(2..spreadsheet.last_row).each do |i|
row = Hash[[header, spreadsheet.row(i)].transpose]
asset = find_or_initialize_by_id(spreadsheet.cell(i, 'A')) || new
asset.attributes = row.to_hash.slice(*accessible_attributes)
asset.save!
end
end
编辑:这是当前行为的一个例子