为什么要分配此实例变量

时间:2015-06-29 04:24:15

标签: ruby-on-rails ruby

我正在阅读一篇关于ruby服务对象的文章: http://code.tutsplus.com/tutorials/service-objects-with-rails-using-aldous--cms-23689

我不明白为什么要给@user_data_hash分配一个值。它没有在代码中的任何地方使用。在我读过的其他文章中,我看到很少有其他例子做同样的事情。分配给这个实例变量需要什么?

class CreateUserService < Aldous::Service
  attr_reader :user_data_hash

  def initialize(user_data_hash)
    @user_data_hash = user_data_hash
  end

  def default_result_data
    {user: nil}
  end

  def perform
    user = User.new(user_data_hash)

    if user.save
      Result::Success.new(user: user)
    else
      Result::Failure.new
    end
  end
end

2 个答案:

答案 0 :(得分:2)

使用

@user_data_hash,因为

attr_reader :user_data_hash

是一个宏:

def user_data_hash
  @user_data_hash
end

这意味着:user = User.new(user_data_hash)方法中的这一行perform将读取分配给@user_data_hash的哈希:

答案 1 :(得分:1)

attr_reader定义了一个名为user_data_hash的方法,该方法返回@user_data_hash。因此,无论何时拨打user_data_hash,都会使用它。