Ruby on rails rails 3.2.1自定义模块限制控制器对私有实例方法的访问

Ruby on rails rails 3.2.1自定义模块限制控制器对私有实例方法的访问,ruby-on-rails,module,private-methods,Ruby On Rails,Module,Private Methods,**使用Rails:3.2.1、Ruby:Ruby 1.9.3p0(2011-10-30修订版33570)[i686 linux]** 在我的模块中,我有一个私有实例方法(获取随机词的表)和 一个模块功能(获取随机字) 我从Rails控制器调用模块函数,它可以正常工作。 然而,当我调用模块的私有实例方法时,调用该方法也不会出现任何问题 有谁能解释一下这种行为背后的原因以及如何实现 我想要的功能。我不想得到我模块的私有实例方法 从包含我的模块的类调用。我的私有实例方法是一个实用程序方法 只需要从模

**使用Rails:3.2.1、Ruby:Ruby 1.9.3p0(2011-10-30修订版33570)[i686 linux]**

在我的模块中,我有一个私有实例方法(获取随机词的表)和 一个模块功能(获取随机字)

我从Rails控制器调用模块函数,它可以正常工作。 然而,当我调用模块的私有实例方法时,调用该方法也不会出现任何问题

有谁能解释一下这种行为背后的原因以及如何实现 我想要的功能。我不想得到我模块的私有实例方法 从包含我的模块的类调用。我的私有实例方法是一个实用程序方法 只需要从模块内部工作

Util::RandomWordsUtil

    module Util
        module RandomWordsUtil
            def get_tables_of_random_words
                # Implementation here
            end

            private :get_tables_of_random_words 

            module_function

            def get_random_word
                # invoke get_tables_of_random_words
            end

        end

    end
游戏控制器(脚手架生成控制器-定制)

class GamesController
以下是我尝试过但没有达到预期效果的方法。 参考:

Util::RandomWordsUtil(尝试方法-1)#找不到随机词的get#U tables_

    module Util
        module RandomWordsUtil
            def self.included(base)
                class << base
                    def get_tables_of_random_words
                        # Implementation here
                    end

                    private :get_tables_of_random_words 
                end
            end

            module_function

            def get_random_word
                # invoke get_tables_of_random_words
            end

        end

    end
模块Util
WordSutil模块
def自带(基本)

类我认为,当您“包含”模块时,您正在使其成为一个mixin,以便其中的所有方法都成为包含它的类的方法。您是否尝试过使用“require”来代替它?

是的,我尝试过使用该模块,但我面临的错误是没有加载此类文件。可能是我没有正确指定文件的路径。在Rails应用程序中,我的实用程序模块位于路径lib/util/。我无法确定控制器中的require方法应该使用什么路径来使用这些模块?在ben#u h对Mike Fischer的评论中,他说require不应该在rails应用程序中使用。我追踪了链接,发现:config.autoload_paths+=Dir[“#{config.root}/lib/**/”]。#包括所有子目录——这对你有用吗?是的,下面是我的config/application.rb:config.autoload_paths+=Dir[“{config.root}/lib/**/“]并且它正在工作。
    module Util
        module RandomWordsUtil
            def self.included(base)
                class << base
                    def get_tables_of_random_words
                        # Implementation here
                    end

                    private :get_tables_of_random_words 
                end
            end

            module_function

            def get_random_word
                # invoke get_tables_of_random_words
            end

        end

    end
    module Util
        module RandomWordsUtil
            def self.included(base)
                class << base
                    def get_random_word
                        # invoke get_tables_of_random_words 
                    end

                    private 
                    def get_tables_of_random_words
                        # Implementation here
                    end

                end
            end
        end
    end