我不知道是否可能,但我有一个表格,当我提交表格时,我希望记录在数据库中多次保存。截至目前,我并不担心效率,而是为了让这件事情继续下去。
@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_id
和description
,当用户提交表单时,我想迭代所有关注group_id
的用户,并使用相应的{{1}保存记录谁都跟随小组。
我不认为我需要对此进行验证。
答案 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
答案 1 :(得分:-1)
<强>更新强>
所以我做了一些挖掘,发现这并不像我原先想象的那么简单。
当你拨打@message.save
时,rails会在幕后检查该记录是否是新记录(即呼叫@message.new_record?
)如果它不是新记录,它将更新现有记录而不是创建一个新的。如果可以覆盖它,则可以多次保存记录。
我在尝试直接设置new_record
属性时发现的问题是它仅在初始化时调用(调用@message.new
时)并且如果记录未初始化,则new_record
默认为false。
正如其他人在评论中指出的那样,确实不需要成为保存相同记录的理由(这就是为什么rails不容易允许它)。如果要将同一消息分配给多个用户,请设置关联以关联这两个模型。如果您每次执行某些操作时都需要使用相同的消息,请创建一次,然后只需在需要使用它时从数据库中获取它。