哈希用于保存的IP,是应该转到控制器还是模型?

时间:2011-08-10 01:55:52

标签: ruby-on-rails ruby-on-rails-3

在我的讨论区,我有一个发布课程。有两个特殊的功能,我想知道它们放在哪里的最佳位置。

首先,我有一个作者字段,用户输入将被三次编码。例如,name#tripcode变为name◆3GqYIJ3ObsWikipedia)。我目前在模型中的before_save中进行此操作,但我想知道这是否应该转到控制器。

其次,我有一个hashed_ip字段,它基本上用md5和加密传递用户ip。我仍在努力,但是使用普通ip设置params[:hashed_ip]来处理模型的行为似乎在语义上是错误的,但同时它使代码更清晰。
如果我正在使用其他语言,我只需要一个构造函数来处理这个转换,这将在语义上更好,更清晰。
我不确定我是否可以直接在模型中获取IP。

由于

2 个答案:

答案 0 :(得分:1)

通常,您的控制器应尽可能精确,并且准备数据的逻辑(特别是在这种情况下)确实属于模型。

关于第二个问题,您无法直接从模型访问IP地址,该数据只能通过控制器访问。当然你可以创建一个从Rack / ActionController扩展的模块/类来获取那些数据但是在你的情况下它是不值得的。

答案 1 :(得分:1)

拇指规则是 - “胖模特,瘦小的控制者”。请阅读this article以获得更好的解释。

  1. 对用户输入进行三重编码属于该模型。你做对了。
  2. 如果您需要在多个控制器中计算hashed_ip,请将该功能移至ApplicationController