我正在将 Rails 应用程序从 Rails 3.2 升级到 Rails 7(不要问!!)。有一个无表模型正在使用这个gist,但它不再工作了。看起来这里的建议也不再有效。有人有可行的解决方案吗?
我已经尝试过
ActiveModel:API
,但我需要支持协会。
使用
ActiveModel::API
。它是 Rails 核心团队为此目的提供的官方模块。我知道你已经意识到了,你已经尝试过了。
确实如此。在您的无状态模型中自行实现这些。
它可以非常简单,具体取决于这些无状态模型在您的遗留应用程序中的使用程度。只需确保定义无状态模型上调用的所有消息即可。
EG
class Person
def pets
@pets ||= []
end
end
class Pet
end
bob = Person.new
dog_1 = Pet.new
bob.pets << dog_1
使用无状态模型有一个优点,它是一组熟悉的抽象,可以使遗留应用程序的维护成本更低。
Rails 不支持这种关联是有原因的。模型之间的关联完全耦合到 SQL 数据存储。两者缺一不可。因为它们是 SQL 中主键和外键的 Ruby 表示。
所以如果你想要这个,你就必须编写它的简单版本。
因为事实上这是一种不常见的方法。