我正在使用RoR 3.x和MySQL作爲後端。Rails MySQL自動生成列
是否有任何方式來修改現有的id(通過遷移自動生成),以便可以生成特定的用戶定義模式。
對於例如:「產品表」應該在「ID」值,如「P01」,「P02」等,其中,可以由用戶來指定P,和01,02字段是自動生成的。
在此先感謝!
我正在使用RoR 3.x和MySQL作爲後端。Rails MySQL自動生成列
是否有任何方式來修改現有的id(通過遷移自動生成),以便可以生成特定的用戶定義模式。
對於例如:「產品表」應該在「ID」值,如「P01」,「P02」等,其中,可以由用戶來指定P,和01,02字段是自動生成的。
在此先感謝!
在這種情況下,'常規'ID(1,2,3,...,n)不是由rails生成的,而是由MySQL生成的(使用AUTO_INCREMENT
)。所以,如果你想使用自動生成的自動遞增ID,我建議不要搞這個。你可以做什麼,我會建議,創建一個額外的列,然後在你的模型上使用回調來填充。
例子:
class Product < ActiveRecord::Base
attr_accessor :user_supplied_prefix
after_create :generate_user_supplied_id
private
def generate_user_supplied_id
update_attribute(:user_supplied_id, "#{self.user_supplied_prefix}#{self.id}")
end
end
這種方法的缺點是,Product.find(user_supplied_id)
將無法正常工作。幸運的是,Product.find_by_user_supplied_id(user_supplied_id)
會。
謝謝...這工作:) – Rashmi 2011-06-13 11:51:37
你是否考慮過爲角色/計數創建一個或兩個額外的列,然後自己更新它們,並將ID單獨留下?還是有另一個要求,防止這種情況? – Kelend 2011-06-09 14:25:04