Ruby on rails 与其父实例同时创建子实例

Ruby on rails 与其父实例同时创建子实例,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在尝试创建一个轮询系统: # models class Poll < ActiveRecord::Base has_many :answers end class Answer < ActiveRecord::Base belongs_to :poll end # routes resources :polls do resources :answers end 但似乎应该有更好的办法。我不反对取消整个设置,或者将问题放在Poll上的数组属性中。但是还有计票的问

我正在尝试创建一个轮询系统:

# models
class Poll < ActiveRecord::Base
  has_many :answers
end

class Answer < ActiveRecord::Base
  belongs_to :poll
end

# routes
resources :polls do
  resources :answers
end

但似乎应该有更好的办法。我不反对取消整个设置,或者将问题放在
Poll
上的数组属性中。但是还有计票的问题。

看看Rails
接受
()的嵌套属性,特别是链接的一对多部分。它将允许您创建一个
投票
,并同时创建任意多个
答案
s。前面的注释就是方法。在这样做的过程中,检查一下以使您的生活更轻松。@james00794看起来很完美,谢谢!
def create
  @poll = @poll.create(poll_params)

  if @poll.save
    if params[:poll_answer1].present?
      @poll.answers.create!(answer: params[:poll_answer1])
    end

    if params[:poll_answer2].present?
      @poll.answers.create!(answer: params[:poll_answer2])
    end

    flash[:notice] = "Poll created."
    redirect_to @poll
  else
    flash[:error] = "Poll could not be created."
    render :new
  end
end