我有一个Search
模型和控制器。业务逻辑是,如果用户的关键字完全匹配产品的型号,则将其重定向到产品页面。最佳实践 - 模型中的重定向? - Rails 3.1
在这种情况下,我应该从模型内部进行重定向吗(大部分逻辑已经驻留)?
或者我应该返回一个标志或东西给控制器,以便我可以处理重定向?
我有一个Search
模型和控制器。业务逻辑是,如果用户的关键字完全匹配产品的型号,则将其重定向到产品页面。最佳实践 - 模型中的重定向? - Rails 3.1
在这种情况下,我应该从模型内部进行重定向吗(大部分逻辑已经驻留)?
或者我应该返回一个标志或东西给控制器,以便我可以处理重定向?
模型对象不能回答不应该做重定向。应用程序逻辑是控制器的责任,所以控制器应该询问模型对象(作为请求的结果)产品是否与型号相匹配,然后控制器执行重定向。模型对象不应该知道任何关于控制器或视图的信息。这是由Rails实现的"Model-View-Controller concept"的一部分。
Rails将模型实现为ActiveRecord pattern,因此模型对象负责数据库并且包括对数据库的搜索是可以的。查看Rails Guides for ActiveRecord Queries中的许多选项,了解模型对象的责任。
永远记住MVC模式:MVC in Rails
型号不得利用重定向或相关的控制器一些其他的东西照顾。让重定向在控制器中。
是否可以在模型中执行所有搜索db(跨多个模型)的run_search函数,还是最好让控制器也这样做? – Jacob
我会扩大我的答案。 – mliebelt