我正在 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
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")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句