小编Woj*_*ski的帖子

9
推荐指数
1
解决办法
1195
查看次数

当加载根命名空间中的另一个同名类时,Rails类加载会跳过命名空间类

我有两个名称空间,每个名称空间都有自己的控制器和演示者类: Member::DocumentsController Member::DocumentPresenter Guest::DocumentsController Guest::DocumentPresenter

两位主持人都继承自::DocumentPresenter.

控制器访问其各自的演示者而不指定名称空间,例如:

class Guest::DocumentsController < ActionController::Base
    def show
        DocumentPresenter.new(find_document)
    end
end
Run Code Online (Sandbox Code Playgroud)

这通常会在同一名称空间内调用presenter.但有时在开发环境中我看到base :: DocumentPresenter正在使用中.

我怀疑原因是base :: DocumentPresenter已经加载了,所以Rails类自动加载并不需要进一步查看.这可能是这种情况吗?它也可以在生产环境中发生吗?

我可以想到两个解决方案:

  • 将基类重命名为DocumentPresenterBase
  • 在控制器文件中明确要求适当的presenter文件

有更好的解决方案吗?

ruby ruby-on-rails classloader

7
推荐指数
1
解决办法
1393
查看次数

Rails STI - 子类中的自定义关联

class Upload < ActiveRecord::Base
    has_many :comments
end

class Gallery < Upload
    has_many :images
end

class MusicAlbum < Upload
    has_many :audio_tracks
end
Run Code Online (Sandbox Code Playgroud)

这应该按预期工作吗?Gallery 和 MusicAlubm 模型是否会从其父模型(上传)继承 :comments 关联并添加自己的模型?

activerecord sti

3
推荐指数
1
解决办法
1607
查看次数