我有一张桌子,我试图填写,最终创建一个漂亮的网络图。其中一个表称为User,另一个称为Relationship。我想用大约10个条目填写它们。这种关系是一个用户与多个关系。
我正在使用的模型是
ActiveRecord::Schema.define(version: 20150603200530) do
create_table "relationships", force: true do |t|
t.integer "source"
t.integer "target"
t.integer "value"
end
create_table "users", force: true do |t|
t.string "name"
t.integer "group"
end
end
我正在使用populate gem。这很酷
关系表与users.source = user.id相关。我想为'source','target'和'value'生成1到10之间的randome值。 在一个名为populate.rake的文件中(在lib / assets中)到目前为止,我有:
namespace :db do
desc "Erase and fill database"
task :populate => :environment do
require 'populator'
require 'faker'
[User, Relationship].each(&:delete_all)
User.populate 100 do |user|
user.name = Populator.words(1..3).titleize
Relationship.populate 1..10 do |relationship|
relationship.source = 1..10
relationship.target = 1..10
relationship.value = 1..10
end
end
end
end
但是我收到了错误:
ActiveRecord::StatementInvalid: SQLite3::SQLException: too many terms in compound SELECT: INSERT INTO "relationships" ("id", "source", "target", "value") VALUES (1, 9, 10, 6).... etc.
答案 0 :(得分:2)
此错误似乎来自SQLite,它限制了您可以使用一个INSERT
语句插入的记录数。
您可以尝试通过设置populator选项:per_query
来减少每个INSERT的记录数:
User.populate(100, :per_query => 10)