簡體   English   中英

使用Ruby on Rails中的標准創建方法一次創建多個對象

[英]Create more than one object at once using the standard create method in Ruby on Rails

我試圖使用為Ruby / Rails項目創建的標准create方法,並簡單地傳遞一個附加的表單字段,該字段告訴該方法要創建多少個對象(相對於僅創建一個對象)。 標准的創建方法如下所示:

def create
@micropost = Micropost.new(micropost_params)

respond_to do |format|
  if @micropost.save
    format.html { redirect_to @micropost, notice: 'Micropost was successfully created.' }
    format.json { render :show, status: :created, location: @micropost }
  else
    format.html { render :new }
    format.json { render json: @micropost.errors, status: :unprocessable_entity }
  end
end
end

我想傳遞一個附加數據(稱為number_to_create的表單字段),該數據告訴方法要創建多少個微職位。 除了其他micropost表單字段參數外,我只是添加了一個這樣的新表單字段:

<%= text_field_tag :number_to_create %>

我的問題是如何修改創建方法代碼,以使其創建N個微博對象,而不是一個。 因此,如果我從表單中傳入3以及其他微博屬性,則該方法會創建3個相同的微博對象,而不僅僅是當前的對象。

在此先感謝您的幫助。

您可以將參數用作時間

@microposts = Micropost.transaction do 
  [].tap do |microposts|
    param[:number_to_create].times do
      microposts << Micropost.create(micropost_params)
    end
  end
end

respond_to do |format|
  if @microposts.all? &:persisted?
    format.html { redirect_to @micropost, notice: 'Micropost was successfully created.' }
    format.json { render :show, status: :created, location: @micropost }
  else
    format.html { render :new }
    format.json { render json: @micropost.errors, status: :unprocessable_entity }
  end
end

事務塊是確保要么全部保存,要么全部都不保存,這樣您就可以修復錯誤並重新創建它們,而不必擔心會得到任何散亂保存的對象

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM