我想使用一些已有的记录在我的mysql数据库中创建一些记录。我使用的是rails 4.2
这是我的控制器中的相关代码:
linkconfig_id = 17
new_config = Linkconfigdetail.where(:linkconfig_id => user_params[:linkconfig_id])
new_config.each do |config|
config[:linkconfig_id] = linkconfig_id
config[:id] = nil
config[:created_at] = nil
config[:updated_at] = nil
end
Linkconfigdetail.create(new_config)
new_config变量包含了Linkconfigdetail-model的一些数据集,我想稍微修改一下,然后保存为新的,但是我得到了错误消息:
ArgumentError (When assigning attributes, you must pass a hash as an argument.):
和create-method的行。
我已经检查过了。new_config-array不是nil。在创建之前(使用inspect),它看起来是这样的:
#<ActiveRecord::Relation [#<Linkconfigdetail id: nil, linkconfig_id: 17, link_id: 1, location: 0, created_at: nil, updated_at: nil>, #<Linkconfigdetail id: nil, linkconfig_id: 17, link_id: 18, location: 1, created_at: nil, updated_at: nil>, #<Linkconfigdetail id: ...
我很感激每一个提示,或者任何其他解决这个问题的方法。我无法想象,这是如此困难。我已经有很多问题,甚至改变数据集。许多方法,如删除不工作,但我终于找不到一种方法来解决这个问题。
2条答案
按热度按时间k0pti3hp1#
您不能传递关系或其他示例,而不是
create
的哈希。相反,您可以复制原始示例,创建一个新示例,该示例不具有与原始示例相同的持久值(id
、created_at
和updated_at
属性除外),并在保存之前更改所需的属性您可以:
8ulbf1ek2#
您正在向
create
传递一个对象,而它应该是一个散列(但是,嘿,这正是error所说的,不是吗?))因此,要获得您所需要的,您可以使用
attributes
方法: