散列IP进行保存,是应该转到控制器还是模型?

在我的讨论区,我有一个Post课程。 有两个特殊function,我想知道放在哪里的最佳位置。

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

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

谢谢

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

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

拇指规则是 – “脂肪模型,瘦的控制器”。 阅读本文以获得一个很好的解释。

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