2017-04-08 56 views
0

我有一个需要,我必须从数据库中返回一条记录,然后更新它,以便下次不返回相同的记录。这是制作实时队列所必需的。 我面临的问题是在同一时刻我的行动正在发生多个电话。由于这个原因,相同的记录正在返回给多个用户。 我试过用锁!函数,但它会写入锁定而不是读取锁定。 请建议一些方法来实现这一点。顺序执行的行动轨道

回答

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将被转义

希望这有助于