好的做法 - 模型中的重定向? - Rails 3.1

时间:2011-11-16 12:40:40

标签: ruby-on-rails ruby-on-rails-3.1

我有一个Search模型和控制器。业务逻辑是,如果用户的关键字完全匹配产品的型号,则将它们重定向到产品页面。

在这种情况下,我是否应该从模型内部进行重定向(大部分逻辑已驻留在哪里)?

或者我应该向控制器返回一个标志或什么东西,以便我可以处理重定向?

2 个答案:

答案 0 :(得分:9)

模型对象不能ans永远不会重定向。应用程序逻辑是控制器的职责,因此控制器应该询问模型对象(作为请求的结果)产品是否与型号匹配,然后控制器执行重定向。模型对象不应该知道有关控制器或视图的任何信息。这是Rails实现的"Model-View-Controller concept"的一部分。

Rails将模型实现为ActiveRecord pattern,因此模型对象可以负责数据库,包括对数据库的搜索。请参阅Rails Guides for ActiveRecord Queries中的许多选项,了解模型对象的责任范围。

答案 1 :(得分:4)

永远记住MVC模式:MVC in Rails

模型不能处理重定向或其他与控制器相关的东西。让重定向在控制器中。