我正在阅读一篇关于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
答案 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
,都会使用它。