说我有很多博客,并且每个博客都有has_many
的帖子。这些存储在2个表格(“博客”和“帖子”)。是否可以将其他列(例如scoped_id)添加到存储由博客限定的ID的博客表中。Rails:范围ID除了主要ID
例
Blog: 1
- Posts
- id: 1, scoped_id: 1
- id: 2, scoped_id: 2
- id: 3, scoped_id: 3
Blog: 2
- Posts
- id: 4, scoped_id: 1
- id: 5, scoped_id: 2
- id: 6, scoped_id: 3
我知道counter_cache可以跟踪由家长博客作用域职位数。但是,如果帖子被销毁,我不希望scoped_id
递减。
非常好。谢谢! – Homar
当服务器同时处理两个请求时,这段代码容易受到竞争条件的影响,导致两个或多个博客条目具有相同的scoped_id。例如,请考虑以下顺序:(1)请求A读取latest_scoped_post_id x,(2)请求B读取相同的latest_scoped_post_id x,(3)请求A将scoped_id设置为x + 1,(4)请求B将scoped_id设置为x + 1(与请求A相同)。 – antinome
你可能会认为在一个事务中保持这种竞争状态是可以避免的,但是它不会,除非你把事务隔离级别设置得非常高(可能是性能问题的一个坏主意)。 – antinome