Rails:在一个Controller中处理两个模型的CRUD操作是不好的做法吗?

时间:2013-07-16 19:53:14

标签: ruby-on-rails crud

我正在开发一个Rails项目。我被建议制作一个控制器,Home_Controller,它将处理网站的请求。我有两个不同的模型,Post和Person(顺便说一句,完全独立)。我想在Home Controller中定义像new这样的方法,但是编写像new_personnew_post这样的控制器方法似乎违反惯例。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

IS 针对MVC模式,因为Home_Controller应仅控制Home模型。

您应该有一个PeopleController和一个PostsController来区分您的疑虑。

话虽如此 - 拥有你要求的系统并不是闻所未闻的......你只需要在routes.rb创建自己的自定义路线以匹配你的想。例如,您的HomeController可能看起来像,

class HomeController < ApplicationController
  ...
  def new_person
    @person = Person.create
  end
  def new_post
    @post   = Post.create
  end
end

路线看起来像,

get 'people/new' => 'home#new_person'
get 'post/new' => 'home#new_post'

主要问题是当你偏离这个约定时,会遇到非常难以理解且难以维护的代码。特别是当你在1个文件中有多手牌时。

答案 1 :(得分:1)

继续说可能。很难确切地知道在上下文之外,但是,这会违反惯例。

与常规问题分开,是可维护性和可读性,并且有一个庞大的控制器文件将会开发出来。