Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails代码中找到方法_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 如何在rails代码中找到方法

Ruby on rails 如何在rails代码中找到方法,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我正在研究一些开源代码,以便更好地熟悉rails代码 我在应用程序\u控制器中看到以下内容 def can_signup? [ :allowed, :needs_approval ].include? Setting.user_signup end 我似乎找不到此方法在代码设置中的定义位置。用户注册 设置是一个模型 我会错过什么?链接到代码: Grep输出: /rails_projects/fat_free_crm $ grep -r --include="*.rb" "use

我正在研究一些开源代码,以便更好地熟悉rails代码

我在
应用程序\u控制器中看到以下内容

  def can_signup?
    [ :allowed, :needs_approval ].include? Setting.user_signup
  end
我似乎找不到此方法在代码
设置中的定义位置。用户注册

设置
是一个模型

我会错过什么?链接到代码:

Grep输出:

/rails_projects/fat_free_crm $ grep -r --include="*.rb" "user_signup" .
./app/controllers/application_controller.rb:    [ :allowed, :needs_approval ].include? Setting.user_signup
./app/controllers/users_controller.rb:      if Setting.user_signup == :needs_approval
./app/models/users/user.rb:    self.suspended? && self.login_count == 0 && Setting.user_signup == :needs_approval
./app/models/users/user.rb:    self.suspended_at = Time.now if Setting.user_signup == :needs_approval && !self.admin
./spec/controllers/authentications_controller_spec.rb:          Setting.stub!(:user_signup).and_return(:needs_approval)
./spec/controllers/users_controller_spec.rb:        Setting.stub!(:user_signup).and_return(:needs_approval)
./spec/models/users/user_spec.rb:    Setting.stub(:user_signup).and_return(:needs_approval)
./spec/models/users/user_spec.rb:    Setting.stub(:user_signup).and_return(:needs_approval)

由于Ruby是一种动态语言,寻找方法的最佳方法是搜索字符串本身。请记住,由于可以动态创建方法,因此代码中可能没有实际的
def user\u注册
,因此该方法可能仍然存在


要在所有项目中搜索字符串,您可以使用编辑器(无论哪个编辑器-所有编辑器都有此选项),或者只需从应用程序根目录中使用
grep-r user\u signup.

由于Ruby是一种动态语言,寻找方法的最佳方法是搜索字符串本身。请记住,由于可以动态创建方法,因此代码中可能没有实际的
def user\u注册
,因此该方法可能仍然存在


要在所有项目中搜索字符串,您可以使用编辑器(无论哪个编辑器-所有编辑器都有此选项),或者只需从应用程序根目录中使用
grep-r user\u signup.

在这种情况下,
设置
模型使用
方法_missing
,这是一种特殊的调用方法(如果定义的话)当引发
NoMethodError
异常时

有关
方法\u缺失的更多信息,请点击此处:

如果查看
设置中缺少的
方法
实现

您会发现
Setting.user\u signup
将变成
Setting['user\u signup']
,因此
[]
方法将以
user\u signup
作为第一个参数调用:


根据文档,该方法(
[]
)将在数据库表或.yml文件中搜索名称等于第一个参数的设置,然后返回相对值。

在这种情况下,
设置
模型使用的是
方法_missing
,这是一种称为(如果定义)的特殊方法当引发
NoMethodError
异常时

有关
方法\u缺失的更多信息,请点击此处:

如果查看
设置中缺少的
方法
实现

您会发现
Setting.user\u signup
将变成
Setting['user\u signup']
,因此
[]
方法将以
user\u signup
作为第一个参数调用:


根据文档,该方法(
[]
)将在数据库表或.yml文件中搜索名称等于第一个参数的设置,然后返回相对值。

我做了grep,但没有找到任何类似于方法初始化的内容…我更新了问题我做了grep,但没有找到任何类似于方法初始化的内容…我更新了问题请参见