У меня есть таблица, которую я пытаюсь заполнить, чтобы в итоге создать красивую сетевую диаграмму. Одна из таблиц называется User, а другая называется отношениями. Я хотел бы заполнить их примерно по 10 записей. Отношение является одним пользователем для многих отношений.Как ограничить количество записей INSERT с помощью Populator in Rails
модель я использую
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
Я использую заселить камень. Это очень здорово
Таблица отношений связана с таблицей пользователя как relationship.source = user.id. Я хотел бы, чтобы генерировать значения randome для «источника», «цель» и «значение» в диапазоне от 1 до 10. в файле populate.rake (в Lib/активы) до сих пор у меня есть:
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.
Этот камень может помочь вам https://github.com/stympy/faker – usmanali
Не совсем достаточно гибкой, но спасибо –
@usmanali - я нахожу 'ffaker' немного более надежным. – BroiSatse