gpt4 book ai didi

ruby-on-rails-3 - Ruby on Rails gem 包含和初始化顺序,用于重新打开在另一个 gem 的 gem 中声明的模型

转载 作者:行者123 更新时间:2023-12-05 01:35:08 29 4
gpt4 key购买 nike

最初,我发布了 Stack Overflow 问题 Ruby on Rails gems... Re-open models (现已删除)。但我认为这个问题太令人困惑了……我会根据我的发现尝试提出不同的问题。

假设...

  • Gem A 有一个引擎 (lib/a/engine.rb) 并声明了一个模型 M(基于 ActiveRecord,'app/models/m.rb')。
  • 在 gem A 中,有一个入口点 (lib/a.rb),它在 rails 加载 gem 时被解析。
  • 在 gem B 中,有一个入口点 (lib/b.rb),它在 rails 加载 gem 时被解析。
  • Gem B 依赖于 gem A(在 gemspec 中指定),需要重新打开 A::M 模型。
  • 我检查过“a.rb”在“b.rb”之前加载,确实如此。

现在我的问题是,在“b.rb”中,如果我尝试对 M 模型(来自 gem A,还记得吗?)执行 class_eval 以重新打开它并向其添加“B 特定逻辑” ,M 类尚未定义...我已将消息放入“m.rb”中,我认为它在加载“a.rb”和“b.rb”后很长时间才加载...

在 gem B 中,如何在 ActiveRecord 加载我的模型 A::M 后获得回调?我需要在引擎中做些什么吗?或者换句话说,ActiveRecord加载完A中的模型后加载了哪些文件?

最佳答案

以防万一,请务必在 gem B 中手动加载 gem A。

关于ruby-on-rails-3 - Ruby on Rails gem 包含和初始化顺序,用于重新打开在另一个 gem 的 gem 中声明的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655671/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com