【问题标题】:Access an ActiveRecord association without a model在没有模型的情况下访问 ActiveRecord 关联
【发布时间】:2013-12-04 19:56:24
【问题描述】:

我们正在拆分一个 Rails 项目。一些数据,以前是一个 Active Record 模型,现在可以通过外部 API 访问。有没有一种简单的方法可以让所有原始关联保持正常运行?

例如,我们从一个典型的开始:

 class Foo < ActiveRecord::Base
   has_many :bar
 end

但现在Bar 不再在我们的数据库中。因此,要从Bar 访问Foo,我们必须调用Foo.where(bar_id:bar.id)Foo.find(bar_id:bar.id),具体取决于OTM 或MTM,我们过去可以调用bar.foosbar.foo

有什么好的方法可以做到这一点?当 Bar 不再是 ActiveRecord 模型时,是否有一种简单的方法来提供所有 has_many 关系方法?

【问题讨论】:

    标签: ruby-on-rails ruby activerecord


    【解决方案1】:

    如果您有一个带有#id 方法的bar 对象,为什么不像这样在该对象类中定义一个foo 实例方法来重新创建关联?

    class Bar
    
      # OTM example
      def foo
        Foo.where(bar_id: self.id)
      end
    
    end
    

    【讨论】:

    • 在规模上,这是非常重复的行为。每个都有一些关联,我们正在对整个应用程序中交织在一起的大约六个类进行此操作。我在玩acts_like_relation_concern,但我必须关心所涉及的每个班级。 ActiveRecord 完全抽象了这个,只是有一个数据库依赖。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多