我正在Rails应用程序中执行批量操作。在我的应用程序中,我正在从UI中选择Mac地址(在复选框中)以获取所选mac地址的状态并将结果保存到db。现在我必须显示所选的最后执行细节获取状态后的mac地址。为此,我需要为每次执行保存一些唯一的ID。下面需要存储在DB中的结果。无论何时我执行ID都应该是唯一的。如何在Rails中创建唯一的ID?如果db中已经存在唯一ID,则必须为每次执行创建一些随机数。
MacAddress Status id
6A:56:78:88 Online 1
78:88:98:90 Offline 1
//Next Execution
6A:56:78:88 Online 2
78:88:98:90 Online 2
答案 0 :(得分:0)
Id是保留名称,您不能将其用作列名称。
默认情况下,您保存的所有记录将获得唯一的ID,因此您无需担心。
Produc.create(mac_address: "6A:56:78:88", status: "Online")
将创建具有唯一ID的新记录。
Mac地址已经具有唯一的值可参考,因为没有两个设备具有相同的Mac地址(或者至少不应该这样)
因此找到记录Product.find_by(mac_address: "6A:56:78:88")
会给您正确的记录。
如果要控制要保存为主键的ID号,那么这可能是一个很好的解决方案:
unique_id = rand(2**32..2**64-1)
while !Product.where(mac_address: unique_id).blank? do
unique_id = rand(2**32..2**64-1)
end
new_product = Product.create(id: unique_id, mac_address: "6A:56:78:88", status: "Online")
如果您要生成唯一的代码作为字符串并将其编入索引,则:
unique_id = SecureRandom.urlsafe_base64
new_product= Product.create(id: unique_id, mac_address: "6A:56:78:88", status: "Online")