the*_*gah 2 ruby model-view-controller ruby-on-rails organization
越来越多的我将我的所有代码都放在关于MVC的模型和帮助器中.
但是,有时候我不确定在哪里组织代码.它应该进入模型还是应该进入帮助者.每个都有什么好处.是一个更快还是相同.我听说过所有模型都被缓存了,所以看起来像是放置我的大部分代码的更好的地方.
例如,这里有一个在模型或帮助器中工作的场景:
def status
if self.purchased
"Purchased"
elsif self.confirmed
"Confirmed"
elsif self.reserved
"Reserved"
else
"Pending"
end
Run Code Online (Sandbox Code Playgroud)
结束
我不需要像在数据库中那样保存此状态,因为有已购买,已确认和已保留的布尔字段.那么为什么要把它放在一个模型中,或者为什么要把它放到帮助器里呢?
因此,我不确定将代码放入模型或帮助程序中获得的最佳实践或好处,如果它可以同时存在.
您的具体示例包括业务规则,即如果模型的实例都已购买并确认,那么正确的状态是"已购买"而非"已确认"
所以在你的例子中,我肯定将该方法放在模型中,因为它正在编写一个应用程序业务规则.
一个不同的例子:
def status_string
case status
when 0: "Purchased"
when 1: "Confirmed"
else
"Pending"
end
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以在View Helper或Model中合理地定义status_string方法 - 它与任何业务规则无关,它正在更改值的表示形式.我把它放在模型中,因为我倾向于只将html相关的sw放入View Helpers中.但是根据您的国际化方案,类似的方法可能会更好地放在View Helper中.
View Helper的一个很好的例子是一个应用程序范围的方法,可以将日期时间值转换为应用程序的标准表示.例如
# application_helper.rb
def date_long_s(d)
d.strftime("%A, %b *%d, %Y *%I:%M %p")
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2630 次 |
| 最近记录: |