我有一个表offices
。在应用的插入页面上,我有两个用于办公室名称和办公室类型的文本框,以及一个说Add Office
的按钮。我使用jQuery来复制两个文本框,因此用户可以一次插入多个办公室。用户可以输入办公室名称和类型,点击Add Office
,在同一页面上插入更多的办公室,然后点击Submit
。我想用group_by
查询将同时创建的办公室分组在一起。我发现每个插入行都有一个唯一键。我想让一组办公室的行共享相同的唯一密钥。这可能吗?插入多个记录与每个插入的唯一键
回答
在控制器的操作下,您可以创建一个随机数并在您的表上有第三个字段接受唯一密钥。这个唯一的键值就是随机数。
@unique_key = rand[99999999999]
然而,这种方法确实允许一个小99999999999分之1的机会,你将会得到同样的unique_key
值作为另一个办公室。相反,您可能希望创建一个随机散列,以减少创建副本的可能性。
@unique_key = SecureRandom.hex
为了使这更不可能,你可以做
@unique_key = "#{SecureRandom.hex}#{SecureRandom.hex}"
这将在技术上仍是可能的,但可能性微乎其微。
这个例子是如果你使用simple_form。你想修改你自己的具体情况
<%= f.input :unique_key, :as => :hidden, :input_html => {:value => @unique_key} %>
哦,不要忘记在你的迁移中加入'add_index',以确保'unique_key'是索引,它将更好地优化你的数据库。 – kobaltz
你真的没有group_by
中的ActiveRecord查询。你做有group
,但这就是如果你想对行组进行总结和计数,我认为这不是这种情况。
相反,您可以使用group_by
对返回的结果。为了澄清,它不会成为查询生成的的一部分,但它会将结果“按”某些标准“分组”,如唯一键,导致产生一个Hash,其中Hash中的每个条目都会有一个数组
Office.where(...some condition...).group_by(&:my_unique_key_field_name)
或者只是:使用相同的唯一密钥办事处
Office.all.group_by(&:my_unique_key_field_name)
请注意kobaltz答案来生成唯一的密钥,并考虑增容改造它,如果你发现它是有用的。
祝福。
- 1. 一次使用一个插入语句插入多个记录
- 2. SQL触发器插入每个插入400多条记录
- 3. 插入行与多个键
- 4. 记录插入一个
- 5. SQLite3带参数的多个插入;只插入一条记录
- 6. 插入多个记录一次
- 7. 的MySQL插入记录每一个已经存在的记录
- 8. TSQL每个记录加入一个cte并插入
- 9. 插入新记录时,从一个表插入另一个表
- 10. 查询插入每个记录
- 11. Mysql - 选择多个插入的记录
- 12. SQL唯一键插入
- 13. 多个记录插入与动态创建的输入字段
- 14. 的Sql将一个记录插入到多条记录
- 15. 为插入的每个外键插入主键
- 16. 插入批记录,许多插入查询,游标,while循环或事务记录每个记录更好
- 17. Laravel插入记录(外键)
- 18. 如何在一个呼叫中用前一个记录的键插入记录?
- 19. 插入一行为每个键
- 20. 使用单个插入语句插入多条记录
- 21. symfony中插入多个记录
- 22. Android SQLite插入多个记录
- 23. 插入/更新多个记录
- 24. 插入多个记录从Android到PHP?
- 25. 用Mongoid批量插入多个记录?
- 26. SDE自动ID插入多个记录
- 27. 插入多个记录问题(linq EF)
- 28. Oracle SQL - 如何插入多个记录
- 29. 插入多个记录到mysql和mysql_affected_rows()
- 30. 将多个记录插入Access DB
我真的不明白谁会一直在降低提问的质量!这个问题没有错!我要升级它。 – mjnissim