【发布时间】:2014-06-18 17:01:08
【问题描述】:
这更多是设计问题,而不是技术问题。 我对 Rails 很陌生,并试图遵循它的指导方针:
我有一个名为“Foo”的模型以及“FooController”和一个“UserForm.html.erb”来创建重定向到 FooController#create..
的新 Foo 对象
当用户填写表单中的文本字段并提交它时,会在 FooController 类中调用“创建”操作,其中 Foo 模型被持久化到数据库中。
这一切都很简单,直到我添加了一个名为“Bar”的新模型:
bar 模型与“Foo”没有任何共同之处,除了提交它们的表单(“UserForm.html.erb”)现在有一些逻辑,如果用户输入一个特殊的字符串,如“Create Bar!”然后应该创建并保留一个 Bar 实例。
起初我想创建一个新的 BarController 并使用 redirect_to 方法从 FooController#create 重定向到 BarController#create 如果输入字符串是正确的,但这看起来非常丑陋..
类似这样的:
class FooController < ApplicationController
def create
if(params[:user_input] != "CreateBar!"
redirect_to bar_create_path
else
Foo.create()
end
end
所以现在我正在考虑在 FooController#create 操作中创建 Bar 对象,但是让一个控制器负责一个模型来创建其他模型仍然有点奇怪,因为它们都受视图:
class FooController < ApplicationController
def create
if(params[:user_input] != "CreateBar!"
Bar.create()
else
Foo.create()
end
end
我想这两种方式都可以,但是正确的导轨方式是什么?也许还有第三种我没有想到的方法?
【问题讨论】:
标签: ruby-on-rails model-view-controller ruby-on-rails-4