當前我有一個用戶和一個資產表(postgres後端),當用戶創建一個新資產時,它會按預期填充資產ID 1,2,3等。根據我們當前的資產標記方法顯示爲### 1。根據最後一次輸入而不是第一次空白自動遞增ID
作爲資產管理系統的一部分,我們需要導入從當前系統導出的資產。我正在使用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
create方法這是用於導入現有資產
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
編輯方法: 這是當前的行爲的一個例子
我沒有得到你的問題 – beck03076 2013-03-12 13:14:03
我已經更新了問題以顯示當前行爲,因爲沒有id設置爲1的資產,它會自動使用它而不是像我所希望的那樣移動到11 – RyanMacG 2013-03-12 13:34:01
如果你在'postgre'中創建一個序列,然後你可以嘗試在你的Assest模型中使用'set_sequence_name「your_postgree_seq_here」'。 – fmendez 2013-03-12 13:44:51