ruby - 为什么使用 Rails public_method?

标签 ruby ruby-on-rails-3

我正在阅读 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 最终被调用的地方。

文档:Object#public_method , Object#method .

关于ruby - 为什么使用 Rails public_method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15022621/

相关文章:

ruby-on-rails - 无法访问我新安装的 ruby​​ 服务器

Ruby 嵌套哈希动态获取

ruby-on-rails-3 - RSpec 和 Rails 3 - 简单测试失败

ruby-on-rails - Rails 3 路由将字符串添加到主页 URL

ruby - 模型范围的奇怪结果

ruby-on-rails - "bundle update"和 "gem update"有什么区别?

ruby - 为什么我的 rspec 测试使我的对象加倍?

ruby-on-rails - 在多个端口上运行 Rails 应用程序

ajax - 轨道 3 :remote => true does not trigger AJAX requests

javascript - 重定向到我的 Rails 应用程序的西类牙语或英语版本?