2014-07-25 49 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'。 –

相关问题