【发布时间】:2015-04-17 01:19:01
【问题描述】:
我正在使用带有 aasm 的 Rails 4.2 来为项目创建状态机。该项目可以在不同状态之间转换(created、onboarded、checked_out 等),我想创建一个页面,其中操作 url 根据项目的状态而变化。例如,如果它已经是created,则操作可能是onboard。
从设计的角度来看,我可以在模型本身上放置一个函数,如 next_step_path,它将根据状态返回正确的 URL,并在模型中使用像 Rails.application.routes.url_helpers 这样的 Rails 助手。或者我可以在控制器中使用该逻辑,根据模型的状态生成 URL。
这有一个通用的设计模式吗?我最初将它写入模型,但我现在倾向于控制器,因为我需要生成 URL 和基于它的显示。
【问题讨论】:
-
我的方法是在生成 url 的特定辅助函数中利用模型中的状态。然后调用控制器中的函数。但我愿意听取更好的方法。
-
模型不应该对 url 有任何了解。辅助方法是有意义的。或者控制器,如果可行的话。或者创建一个既不是 ActiveRecord 模型也不是控制器的新类,并从控制器和/或辅助方法中调用它。
标签: ruby-on-rails model-view-controller