我正在阅读 Avdi Grimm 的书“Objects in Rails”,他使用了 public_method 方法,但我不明白为什么。这是代码示例:
class Blog
# ...
attr_writer :post_source
# ...
private
def post_source
@post_source ||= Post.public_method(:new)
end
end
为什么要调用 Post.public_method(:new) 而不是 Post.new?这些方法有什么不同还是完全一样?感谢您的帮助。
最佳答案
Post.new
不等同于
Post.public_method(:new)
前者是方法 new
的调用,默认情况下,它会创建一个新的 Post
对象。然而,后者不会立即调用new
。它只是准备稍后调用它。我还没有读过那本书,但是如果你查看相关的源代码,你会看到这一行
@post_source.call # maybe some params are passed here
这是 Post#new
最终被调用的地方。
关于ruby - 为什么使用 Rails public_method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15022621/