Ruby on rails 铁路救援命名错误替代方案

Ruby on rails 铁路救援命名错误替代方案,ruby-on-rails,exception,nomethoderror,Ruby On Rails,Exception,Nomethoderror,我正在创建一个应该在不同环境中运行的代码(每个环境的代码都有一点不同)。同一个类可能在其中一个类中定义方法,但在另一个类中不定义方法。这样,我就可以使用类似于: class User def name "my name" end end 救援命名错误 当方法未在某个特定类中定义时捕获事件,但捕获异常不是正确的逻辑流程 是否存在类似于present的替代方法,以了解该方法是否在特定类中定义?此类是服务,而不是ActionController 我的想法是: class User

我正在创建一个应该在不同环境中运行的代码(每个环境的代码都有一点不同)。同一个类可能在其中一个类中定义方法,但在另一个类中不定义方法。这样,我就可以使用类似于:

class User
  def name
    "my name"
  end
end
救援命名错误

当方法未在某个特定类中定义时捕获事件,但捕获异常不是正确的逻辑流程

是否存在类似于present的替代方法,以了解该方法是否在特定类中定义?此类是服务,而不是
ActionController

我的想法是:

class User
  def name
    "my name"
  end
end
然后

User.new.has_method?(name)
或者类似的东西。

如图所示:它是对象上的一个方法。因此,它将检查该方法的任何对象,并使用
true
false
进行回复

class User
  def name
    "my name"
  end
end

User.new.respond_to?(name)
将返回
true

Rails有一个方法
try
,该方法可以尝试使用某个方法,但如果该对象不存在该方法,则不会抛出错误

@user = User.first
#=> <#User...>

@user.try(:name)
#=> "Alex"

@user.try(:nonexistant_method)
#=> nil
@user=user.first
#=> 
@user.try(:name)
#=>“亚历克斯”
@try(:不存在的_方法)
#=>零
您可能也在寻找类似
method\u missing
,请查看这篇文章:

如图所示:这是一个对象上的方法。因此,它将检查该方法的任何对象,并使用
true
false
进行回复

class User
  def name
    "my name"
  end
end

User.new.respond_to?(name)
将返回
true

Rails有一个方法
try
,该方法可以尝试使用某个方法,但如果该对象不存在该方法,则不会抛出错误

@user = User.first
#=> <#User...>

@user.try(:name)
#=> "Alex"

@user.try(:nonexistant_method)
#=> nil
@user=user.first
#=> 
@user.try(:name)
#=>“亚历克斯”
@try(:不存在的_方法)
#=>零

您可能也在寻找类似于
方法\u缺失的东西
,请查看这篇文章:

这可能是

从上面的链接:您可以使用以下内容:

User.method\u已定义('name')
#=>正确
正如其他人所建议的,您可能希望查看缺少的方法:

类用户
定义名称
“我的名字”
结束
def方法_缺失(方法、*args和块)
将“您使用参数#{args.join(',')}调用了方法#{method}”
puts”--如果给定block_,是否也使用block?
结束
结束
User.new.last_name('Saverin'){'foobar'}
#=>“您使用参数Saverin调用了姓氏”
#=>“--您还可以使用块”

如果您不知道ruby元编程,您可以从

开始,这可能是

从上面的链接:您可以使用以下内容:

User.method\u已定义('name')
#=>正确
正如其他人所建议的,您可能希望查看缺少的方法:

类用户
定义名称
“我的名字”
结束
def方法_缺失(方法、*args和块)
将“您使用参数#{args.join(',')}调用了方法#{method}”
puts”--如果给定block_,是否也使用block?
结束
结束
User.new.last_name('Saverin'){'foobar'}
#=>“您使用参数Saverin调用了姓氏”
#=>“--您还可以使用块”

如果你不知道ruby元编程,你可以从

开始,你的意思是像
一些对象。响应到(:一些方法)
?或者对于类方法:
一些类。响应到(:一些方法)
好吧,在apidock.com/rails/ActionController/MimeResponds/respond>中,他们提到了它的用途,但它不只是用于控制器?或者在这种情况下如何使用它?顺便说一句,我在服务上工作,不是在ActionControllerI,我不知道它是否适合你,因为你还没有发布任何代码。请阅读问题指南,并展示您的代码和用例。
respond\u to?
是Ruby中的一种方法,因此它不仅仅用于视图。它可以在任何地方使用。你是说像
some\u object.respond\u?(:some\u method)
?还是对于类方法:
SomeClass.respond\u?(:some\u method)
,在apidock.com/rails/ActionController/MimeResponds/respond\u中,他们提到了它的用途,但它不仅仅是针对控制器的?或者在这种情况下如何使用它?顺便说一句,我在服务上工作,不是在ActionControllerI,我不知道它是否适合你,因为你还没有发布任何代码。请阅读问题指南,并展示您的代码和用例。
respond\u to?
是Ruby中的一种方法,因此它不仅仅用于视图。它可以在任何地方使用。