Rails Ruby 里面关于类 module 名称的问题

lzyfn123 · 2016年04月06日 · 最后由 watraludru 回复于 2016年04月07日 · 1500 次阅读

例子:

# concerns/admin/name.rb
module Admin
  class Name
    def name
      puts 'name'
    end
  end
end

class Admin::UsersController < Admin::ApplicationController
  def index
    @name = Admin::Name.new.name #正常运行
    @name = Name.new.name # uninitialized constant Admin::UsersController::Name
  end
end

module Admin
  class UsersController < Admin::ApplicationController
    def index
      @name = Admin::Name.new.name #正常运行
      @name = Name.new.name # 正常运行
    end
  end
end

# 问一下这两张定义方式原理 # 那第二种写法是会修改当前的命名空间,是吗?还有问一下,有什么方法测试一下这个命令空间? # 查到问题的答案:https://ruby-china.org/topics/26037

class Admin::UsersController

这样命名空间没有在 Admin 下面,所以直接调用 Name 是找不到的

这里有个讨论,https://github.com/bbatsov/ruby-style-guide/pull/500,注意其中提及的 Blog 与 SO 上的解答。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号