Ruby 关于 Rails has_many 关联定义自定义排序

Ruby on Rails has_many association define custom ordering

我遇到了 运行 问题,不知道如何解决。

我基本上有一个 ModelA 与另一个 ModelB 有 has_many 关系。假设 ModelB 有两个属性。一个 created_at 和一个 filename。现在假设 created_at 由于竞争条件实际上并不准确。但是 filename 包含准确的时间戳。不幸的是,文件名也不一致,并且不能预先提取和添加时间戳。

有什么办法可以做到这一点吗?

class ModelA
    has_many: model_bs, order: extracted_timestamp_from_filename.asc

    def extracted_timestamp_from_filename
        #self would ideally be a single model_bs
        extract_timestamp_from_filename(self.filename)
    end
end

至少对于 order 我认为如果没有实际的正确时间戳属性,这将无法工作。有没有办法获得这个功能?如果有一种方法可以用钩子来做到这一点,我还没有找到它。

这并不是一个真正的修复,但事实证明 Rails 和 MongoDB 实际上能够按字符串排序,而且碰巧我示例中的文件可以这样排序。但是,如果文件名具有不同的格式,这仍然不起作用。在我的示例中,我想我暂时不用管它。

谢谢。