回应?不检查单例课程

时间:2018-12-07 18:43:48

标签: ruby

我试图在实例上定义一个方法,然后使respond_to?返回true。为什么这行不通?

user = User.new
user.define_singleton_method(:email) do
  "some email"
end

# This works
user.email #=> "some email"

# I would have expected this to return true
user.respond_to?(:email) #=> false

有什么方法可以让我在单个实例上定义一个方法,并使它正确响应respond_to?

更新:原来是Ruby on Rails问题。 RoR提供了不同的responss_to?用于Active Record模型。

2 个答案:

答案 0 :(得分:2)

这对于Ruby 2.3.7来说对我来说很好用

class User
end

user = User.new

user.define_singleton_method(:email) do
  "some email"
end

# This works
puts user.email #=> "some email"

#This works too
puts user.respond_to?(:email) #=> true

答案 1 :(得分:1)

方法已定义并存在于公共方法列表中。 https://repl.it/repls/UnluckySpiffyPaint

相关问题