Ruby on rails Rails活动记录是否可以在没有主键的情况下迁移条目?

Ruby on rails Rails活动记录是否可以在没有主键的情况下迁移条目?,ruby-on-rails,postgresql,activerecord,migration,rails-activerecord,Ruby On Rails,Postgresql,Activerecord,Migration,Rails Activerecord,我很清楚为什么需要主键,也很清楚为什么rails在批处理事务中使用主键进行处理 但是,我有一个特定的表,它的数据在一个索引键上关联,而索引键不是唯一的。此外,数据从不更新,只会被删除(记录数据) 我想知道的是,Record.all.each是否有一种阻塞(同步)替代方法,可以在没有主键的记录上使用 需要明确的是:数据没有主键是有充分理由的,因此任何涉及添加主键的解决方案都不是我想要的 代码示例: Data::A.find_all.each do |x| new_entry = Data:

我很清楚为什么需要主键,也很清楚为什么rails在批处理事务中使用主键进行处理

但是,我有一个特定的表,它的数据在一个索引键上关联,而索引键不是唯一的。此外,数据从不更新,只会被删除(记录数据)

我想知道的是,
Record.all.each
是否有一种阻塞(同步)替代方法,可以在没有主键的记录上使用

需要明确的是:数据没有主键是有充分理由的,因此任何涉及添加主键的解决方案都不是我想要的

代码示例:

Data::A.find_all.each do |x|
    new_entry = Data::B.create()

    [:correlating_value_non_unique, :some, :other, :stuff].each do |y|
        new_entry.update_attribute(y, x.read_attribute(y))
    end

    new_entry.save!
end

我推断了几件事,但首先要知道Record.all.each实际上就是Record.find(:all.each)。你可以给find方法一个:lock=>false的解决方案,或者让你的检索成为只读的,我想这就是你要做的。据我所知,不幸的是,这并不能解决问题。如果活动记录没有主键,它仍然会失败。如果数据模型文件有一个伪主键(不是唯一的),迁移也会失败。在我看来,这是有道理的,因为锁定或不锁定事务并不一定意味着事务不应该成批运行(据我所知,这是这个问题的真正原因)。不过,谢谢你的意见。