2014-07-25 65 views
0

我不知道這是可能的,但我有一個表單,當我提交表單時,我希望記錄被多次保存在數據庫中。到目前爲止,我並不擔心效率,而是爲了讓這個事情繼續下去。我可以在數據庫中多次保存一個rails表單值嗎?

@message = Message.new

<%= simple_form_for @message do |f| %> 
<%= f.input :description, as: :text, input_html: {rows: 7}, label: false, placeholder: "Type your message ..." %> 
<%= f.submit "Submit", class: "btn btn-info" %> 
<%end%> 

我想上面的表格可以多次保存,像(我知道它的啞)

for i in 1..4 
@message.save 
end 

意向: 我在這裏的目的是要派單一次向所有組員發送消息。所以我現在有group_iddescription,當用戶提交表單時,我想遍歷所有跟隨group_id的用戶,並將所有跟隨組的user_id's保存在記錄中。 我不認爲我需要驗證這一點。

+0

是的,你可以做到這一點。但最需要的是什麼? –

+1

你肯定需要添加上下文爲什麼你試圖做到這一點。你可能會碰到各種問題,如唯一性驗證,如果你盲目地保存記錄 – ABMagil

+0

基本上我想一次向所有組成員發送消息......所以我將用消息模型中的user_id列替換組員id並保存。 –

回答

-1

UPDATE

所以我做了一些挖掘和發現,這並不像我原先以爲是小事。

當您撥打@message.save時,導軌將在幕後進行檢查,以檢查該記錄是否是新記錄(即,調用@message.new_record?)如果它不是新記錄,則它將更新現有記錄而不是創建新記錄。如果你可以覆蓋它,你可以多次保存記錄。

我試圖直接設置new_record屬性時發現的問題是,它僅在初始化時調用(當調用@message.new時),並且如果記錄未初始化,則new_record默認爲false。

正如其他人在評論中指出的那樣,實際上不應該有一個理由來保存一個相同的記錄(這就是爲什麼rails不容易允許它)。如果您想爲多個用戶分配相同的消息,請設置關聯關聯這兩個模型。如果每次執行某些操作時都需要使用相同的消息,則只需創建一次,然後只需要從數據庫中獲取該消息即可。

+0

它不工作,它只是創建單個記錄。 –

0

你沒有group_id的形式,所以我不確定它是否在其他地方,但你聲稱擁有它,所以我只會假設你這樣做。

@group = Group.find(group_id) 
@group.users.each do |user| 
    message_params = params[:message].merge(user_id: user.id) 
    Message.create(message_params) 
end 
+0

有沒有解決方法w.r.t我的代碼提到?只需簡單地保存表單值多次。'group_id'就是我所得到的參數 –

+0

沒有在你的代碼裏顯示group_id是一個參數,因爲它不在你的表單中。我不完全確定它將如何成爲顯示代碼的參數。但是,如果是這樣,那麼你只需使用我給你的代碼,但使用'params [:group_id]'而不是'group_id'。 –

相關問題