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