一页中有三个模型

时间:2013-11-25 10:42:56

标签: ruby-on-rails

我有三个模型(管道,阶段,交易),具有以下关系:

  • 一个管道有很多阶段/一个阶段属于一个管道
  • 一个阶段有很多交易/一笔交易属于一个阶段

首先我必须创建一个新的管道(这没问题),当我打开管道时我必须做四件事(在管道show.html.erb中)

  • 添加新阶段
  • 添加新优惠
  • 编辑阶段
  • 编辑交易

所以我在几天内如何应对这种情况。向管道添加新阶段没有问题,但我不知道如何为阶段创建新的交易。我希望你理解有人可以给我一个提示如何添加我的交易的问题。

2 个答案:

答案 0 :(得分:0)

你应该看看nested_attributes。关于此,我们有一个很好的railscast

nested_attributes背后的基本思想是在模型中执行以下操作:

class Pipeline
  has_many :stages

  accepts_nested_attributes_for :stages
end

class Stage
  belongs_to :pipeline
  has_many :deals

  accepts_nested_attributes_for :deals
end

class Deal
  belongs_to :stage
end

然后以你的形式:

<%= f.fields_for :stages do |b| %>
  <%= b.text_field ... %>

  <%= b.fields_for :deals do |c| %>
    <%= c.text_field ... %>
  <% end %>

<% end %>

不要忘记在控制器中实例化你的类:

class PipelinesController 
  def new
    @pipeline = Pipeline.new
    @stage    = @pipeline.stages.build
    @deal     = @stage.deals.build
  end
end

答案 1 :(得分:0)

我建议使用表单对象。检查标题为“提取表单对象”的部分以获得想法:http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/

如果您有权访问,您也可以查看此相关的railscast:http://railscasts.com/episodes/416-form-objects