Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道-使用';创建';用于同一控制器中不同类型的模型_Ruby On Rails_Ruby On Rails 3_Model View Controller - Fatal编程技术网

Ruby on rails 轨道-使用';创建';用于同一控制器中不同类型的模型

Ruby on rails 轨道-使用';创建';用于同一控制器中不同类型的模型,ruby-on-rails,ruby-on-rails-3,model-view-controller,Ruby On Rails,Ruby On Rails 3,Model View Controller,以下是我的使用案例,以要点形式呈现,因此很好理解: 管理员用户被植入,类型为user,并被赋予“管理员”角色 该管理员用户可以注册新学生和新教师,两者都是模型 管理员用户进入新用户注册页面(我主要使用designegem模板。) 选择新用户将使用广播框的类型,学生或教师 在Submit时,这里使用的当然是Users控制器,因为Admin属于User类型 但是在这里,我不想使用Users-controllercreate方法。我想创建一个新的学生或教师模型。它们都有自己的控制器,有自己的crea

以下是我的使用案例,以要点形式呈现,因此很好理解:

  • 管理员用户被植入,类型为user,并被赋予“管理员”角色
  • 该管理员用户可以注册新学生和新教师,两者都是模型
  • 管理员用户进入新用户注册页面(我主要使用
    designe
    gem模板。)
  • 选择新用户将使用广播框的类型,学生或教师
  • Submit
    时,这里使用的当然是
    Users
    控制器,因为Admin属于User类型
  • 但是在这里,我不想使用Users-controller
    create
    方法。我想创建一个新的学生或教师模型。它们都有自己的控制器,有自己的
    create
    方法,但是如何从用户控制器调用它们呢?或者,如果这是一种糟糕的做法,我想更一般地说,我的问题是如何创建这些新模型中的一个,而不是用户模型

谢谢

如果我正确理解了您的问题,您可以从您的无线框中检查您的参数,以了解新用户的类型,然后只需调用一些私有方法并将参数传递到,这将根据参数创建新资源

比如说

假设您的params键中有名为
实体的
。您可以在
create#users

def create
  if create_new_resource(params)
    redirect_to some_path
   else
    render 'new'
  end
end

private

def create_new_resource(params)
   "#{params[:entity].create(params)}" 
end

只是作为一个开始版本。您还必须做一些更改

这里的真正问题不是您实际上应该为每个新学生或管理员创建一个新用户吗?您正在使用Desive创建用户、学生和教师?设计可以这样设置吗?你不会有一个单独的表单吗?你有3个模型,用户,老师,学生吗?你能发布一些模型和表单的代码吗?@JD我的意思是我把设计模板剪切粘贴到这些模型的新表单中。我只需要改变一个或两个形式_的方法。好的,很好,这看起来基本上就是我想要的。谢谢