【发布时间】:2019-12-27 00:12:28
【问题描述】:
我想将数据插入到相关表中。一对多的关系。在搜索了最佳实践之后,我找到了这个link,然后我实现了这个。
class InsertDataIntoPermissionAndPermissionGroup < ActiveRecord::Migration
def up
execute <<-SQL
-- ----------------------------------------------------------------------------
WITH a AS (
INSERT INTO spree_permission_groups (name, created_at, updated_at)
VALUES ('role_manager', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) RETURNING id
)
INSERT INTO
spree_permissions (name, action, permission_group_id, created_at, updated_at)
SELECT 'Role', 'manage', id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM a
-- ----------------------------------------------------------------------------
-- ----------------------------------------------------------------------------
WITH b AS (
INSERT INTO spree_permission_groups (name, created_at, updated_at)
VALUES ('department_manager', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) RETURNING id
)
INSERT INTO
spree_permissions (name, action, permission_group_id, created_at, updated_at)
SELECT 'Department', 'manage', id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM b
-- ----------------------------------------------------------------------------
-- ----------------------------------------------------------------------------
WITH c AS (
INSERT INTO spree_permission_groups (name, created_at, updated_at)
VALUES ('holiday_manager', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP) RETURNING id
)
INSERT INTO
spree_permissions (name, action, permission_group_id, created_at, updated_at)
SELECT 'Holiday', 'manage', id, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP FROM c
-- ----------------------------------------------------------------------------
SQL
end
def down
raise ActiveRecord::IrreversibleMigration
end
end
但我有 300 多个数据。这仍然是正确的做法吗?或者我可以导入一个 excel 数据并执行 rails create 方法。
我也有一个错误。认为这没问题,因为我将它包装在 sql 中。
Caused by:
PG::SyntaxError: ERROR: syntax error at or near "WITH"
LINE 14: WITH b AS (
^
更新
修正错误
【问题讨论】:
-
为什么要在迁移中插入它们?,你可以在 rake 任务中插入记录吧?
-
@Aarthi 我们真的没有,因为这只会做一次。这是错的吗?
-
@Aarthi 对此表示感谢。这是一个伟大的博客。我会和我的前辈讨论这个问题。他是建议迁移的人。
-
当然,这取决于用例。还有另一种填充数据的选项。看看这个xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html
标签: ruby-on-rails postgresql migration rails-migrations