Ruby on rails 如何在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
应用程序\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,但没有找到任何类似于方法初始化的内容…我更新了问题请参见