0
我有一个需要,我必须从数据库中返回一条记录,然后更新它,以便下次不返回相同的记录。这是制作实时队列所必需的。 我面临的问题是在同一时刻我的行动正在发生多个电话。由于这个原因,相同的记录正在返回给多个用户。 我试过用锁!函数,但它会写入锁定而不是读取锁定。 请建议一些方法来实现这一点。顺序执行的行动轨道
我有一个需要,我必须从数据库中返回一条记录,然后更新它,以便下次不返回相同的记录。这是制作实时队列所必需的。 我面临的问题是在同一时刻我的行动正在发生多个电话。由于这个原因,相同的记录正在返回给多个用户。 我试过用锁!函数,但它会写入锁定而不是读取锁定。 请建议一些方法来实现这一点。顺序执行的行动轨道
尝试通过创建迁移数据库添加新柱说read_locked
类型为布尔和默认为false(只是为了保持简单)
def change
add_column :your_table_name, :read_locked, :boolean, default: false
end
然后使用默认的范围上型号
default_scope where(:read_locked => false)
下一次你想锁定一些记录,你只需要将read_locked
的值更改为true
model_object.read_locked = true
model_object.save
之后,所有的请求被read_locked将被转义
希望这有助于