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 实际上能够按字符串排序,而且碰巧我示例中的文件可以这样排序。但是,如果文件名具有不同的格式,这仍然不起作用。在我的示例中,我想我暂时不用管它。
谢谢。
我遇到了 运行 问题,不知道如何解决。
我基本上有一个 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 实际上能够按字符串排序,而且碰巧我示例中的文件可以这样排序。但是,如果文件名具有不同的格式,这仍然不起作用。在我的示例中,我想我暂时不用管它。
谢谢。