【问题标题】:Ruby on Rails - where to write business logic while processing a request? (newbie)Ruby on Rails - 处理请求时在哪里编写业务逻辑? (新手)
【发布时间】:2026-01-28 19:10:01
【问题描述】:

我正在学习 Ruby on Rails。我做了一个这样的简单链接:

<%= link_to "Alex Link", alexes_path(@alex) %>

然后我像这样在 routes.rb 中路由它:

  resources :alexes

  get "home/index"

那我有点不清楚,但我认为是控制器的这一部分:

  def index
    #@alexes = Alex.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @alexes }
    end
  end

我是否正确,它转到了控制器的这一部分?

然后什么都没有发生,它进入下一页index.html.rbviews\alexes

所以我想知道的是 - 如果我需要做一些业务逻辑,我会在控制器 sn-p 中编写它吗? sn-p里面在哪里?举个例子就好了。

另外,我想连接到 MongoDb 数据库。我还要在控制器中间写吗?

谢谢!

【问题讨论】:

  • 什么是“亚历克斯”?静态页面? - 如果您还不了解这些指南,我还建议您阅读:edgeguides.rubyonrails.org/getting_started.html。 - 只是为了澄清。通常尽量避免将业务逻辑放入控制器中。
  • @Deradon Alex 是我的名字 :) 它现在是一个非常静态的测试页面,但我计划在学习如何做到这一点时用更复杂的东西来改变它:)
  • @Deradon 但如果不是控制器,在哪里?似乎在它击中控制器之后,它就进入了下一个视图。这令人困惑。
  • 嗯,好的。所以我们可以用 User 来改变“Alex”。因此,您可以创建一个用户模型并将所有业务逻辑放入其中。如果您正在尝试尝试rails g scaffold user name:string。这将创建一个模型、其对应的控制器和一些路由。所以你会看到 rails 的基本工作原理。
  • @Deradon 刚刚尝试过。它创建了很多文件。所以我不清楚,我会在 app/models/user.rb 中编写业务逻辑吗?

标签: ruby-on-rails ruby


【解决方案1】:

是的,控制器用于业务逻辑。模型代表数据,视图代表显示(通常是网页),而控制器正是业务逻辑所在。

查看此网站以获得出色的教程:http://ruby.railstutorial.org/

【讨论】:

  • 谢谢,但请注意上面,这与 Deradon 所说的相反。还是我误会你们了?
  • 胖模型,瘦控制器。这是最佳做法。尽量不要把所有东西都放在控制器中。例如:如果您的控制器中有 backup_user(user) 之类的方法,则应将其移至 User#backup 并在控制器中调用它。 - 或者只是来自 RailsApi:“模型层[..-] 封装了业务逻辑”