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