散列IP进行保存,是应该转到控制器还是模型?
在我的讨论区,我有一个Post课程。 有两个特殊function,我想知道放在哪里的最佳位置。
首先,我有一个作者字段,用户输入将被三次编码。 例如, name#tripcode
成为name◆3GqYIJ3Obs
( 维基百科 )。 我目前在模型中的before_save
中进行,但我想知道这是否应该转到控制器。
其次,我有一个hashed_ip字段,它基本上用md5和加密传递用户ip。 我仍然在努力,但设置params[:hashed_ip]
用普通的ip来处理模型的行为似乎在语义上是错误的,但同时它使代码更清晰。
如果我正在使用其他语言,我只需要一个构造函数来处理这个转换,这将在语义上更好,更清晰。
我不确定我是否可以直接在模型中获取IP。
谢谢
通常,您的控制器应尽可能精确,并且准备数据的逻辑(特别是在这种情况下)确实属于模型。
关于第二个问题,您不能直接从模型访问IP地址,该数据只能通过控制器访问。 当然,您可以创建一个从Rack / ActionController扩展的模块/类来获取该数据,但在您的情况下它不值得。
拇指规则是 – “脂肪模型,瘦的控制器”。 阅读本文以获得一个很好的解释。
- 对用户输入进行三重编码属于该模型。 你做得对。
- 如果需要在多个控制器中计算
hashed_ip
,请将该函数移动到ApplicationController