ruby-on-rails - 什么时候应该在 Rails 应用程序中使用 RESTful Controller ,什么时候不应该?

标签 ruby-on-rails ruby rest

我正在寻找有关何时了解模型及其关联的 RESTful 方法何时正确以及何时不正确的指南。也许这是我当前应用程序的性质,但我发现没有关联的简单模型与 REST 一起工作得很好,但具有许多 has_many 关联的复杂模型似乎确实会使 Controller 中所需的 View 和设置复杂化。 form_for 调用开始变得特别复杂。

也许这是我的新手理解。我从事 Rails 已经三年多了,但 REST 和表单助手一起使用似乎让我感到困惑。

最佳答案

为您系统中的每个顶级模型创建一个资源。我所说的顶级是指独立的模型,并且在关联模型之外具有意义。一般来说,这是大多数模型。在以下示例中,Position 和 Candidate 是顶级的。您可以认为 Candidate 由 PastEmployment 和她申请的职位组成。可以通过求职者资源访问职位申请和之前的工作经历,因为它们本身并不存在。

模型

class Position
  has_many :candidate_positions
  has_many :candidates, :through => :candidate_positions
end

class Candidate
  has_many :candidate_positions
  has_many :positions, :through => :candidate_positions
  has_many :past_employments
  accepts_nested_attributes_for :past_employments
  accepts_nested_attributes_for :candidate_positions
end

class PastEmployment
  belongs_to :candidate
end

class CandidatePosition
  belongs_to :candidate
  belongs_to :position
end

路线

map.resources :positions
map.resources :candidates

使用非资源型 Controller 与跨模型的用户进行交互。例如,如果您想要一个 HomeController显示可用职位以及最近的候选人,那将是一个新的普通 Controller 。如果你想编辑这个 Controller 上的任何信息,酷!您已经有可用于处理表单帖子的 Controller ,它将自动与 <% form_for @candidate %> 连接.您可以使用 <%= render @positions %> 呈现您的位置集合,并且因为您已将它们设为资源,Rails 将知道查看 views/positions/_position.html.erb对于适当的部分。

最终结果应该是您永远不会在多个地方编写逻辑来处理对象的持久性。那是 Controller 变得复杂并且表单失控的时候。这也意味着 Rails 和外部系统知道在哪里检索和存储对象。相同的 URL,相同的 Controller ,只是格式不同。

关于ruby-on-rails - 什么时候应该在 Rails 应用程序中使用 RESTful Controller ,什么时候不应该?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/680246/

相关文章:

ruby-on-rails - 如何限制 ruby​​ 对 Passenger/NGINX 的 CPU 使用?

java - 从服务响应中获取不需要的字符

java - 如何在 rest api jersey 中获取文件的大小

api - 常量 'in' 值轻松作为 REST API 值

javascript - rails-javascript 交互的最佳实践?

ruby-on-rails - Rails 3,FactoryGirl : wrong number of arguments (1 for 0) (ArgumentError)

ruby-on-rails - wkhtmltopdf 发动机场

ruby-on-rails - 唯一约束问题偏执狂 gem

ruby-on-rails - Capybara should have_content 等待的时间不够长

ruby - 我如何将 Nokogiri XML Builder 与单词 "text"字段一起使用?