我试图在实例上定义一个方法,然后使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模型。
答案 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