需要澄清一下,为什么使用包装方法? Ruby on Rails 教程第 9 章第 9.3.3 节当前用户 -
据我所知,助手通常无法在控制器中访问。但为什么要对实例变量 @current_user 进行所有包装呢?
为什么助手将“current_user=”和“current_user”定义为方法?为什么@current_user 可以满足本节所需的全部内容?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我认为你需要继续阅读。从正文来看:
I think you need to continue reading. From the text:
我有同样的问题。是的,我认为 current_user 的结构是为了防止代码复制。但我也认为这可能是一个语法问题。如果您将 current_user 设置为
SessionHelper
的公共属性,(我认为)您可以使用SessionHelper.current_user
访问它,但是如果您定义current_user
> 方法和current_user=(user)
方法,您可以使用current_user
属性,而不会产生额外的混乱。所以,我认为这只是一个风格问题。你的方法也很有效。
I have the same question. Yes, I think that current_user is structured this way to prevent code replication. But I also think it might be a syntax issue. If you made current_user a public property of
SessionHelper
, (I think) you'd access it withSessionHelper.current_user
, but if you define acurrent_user
method, and acurrent_user=(user)
method, you can use thecurrent_user
property without the extra clutter.So, I think it's just a style issue. Your approach works fine too.
我确实从同事那里得到了很好的答案。
这是一个重构问题。您不想在任何地方复制当前用户的代码。
我仍然认为不需要
current_user=
方法。我看不出有什么理由不使用实例变量进行赋值。I did get a good answer from a co-worker.
It is a refactor issue. You don't want to replicate the code from current user everywhere.
I still think the
current_user=
method is not needed. I don't see a reason not to use the instance variable for assignment.