【问题标题】:How can I do a rails migration and rails seed如何进行 Rails 迁移和 Rails 种子
【发布时间】:2020-05-08 22:49:53
【问题描述】:
我想使用这个 postgresql 查询进行 rails 迁移和 rails 种子。我该怎么做?
DROP TABLE IF EXISTS grid_light;
CREATE TABLE grid_light AS
SELECT DISTINCT g.ogc_fid AS id, g.geog4326 AS geog
FROM grid g, tracks t
WHERE t.path_buff_geog && g.geog4326 AND ST_Intersects(t.path_buff_geog, g.geog4326);
【问题讨论】:
标签:
ruby-on-rails
postgresql
postgis
database-migration
seed
【解决方案1】:
你应该创建一个 rake 任务(exp: create grids.rake in your lib/task)
namespace :grids do
desc 'explain your rake here'
task create_grid: :environment do
drop_sql_cmd = <<-SQL
DROP TABLE IF EXISTS grid_light;
SQL
create_sql_cmd = <<-SQL
CREATE TABLE grid_light AS
SELECT DISTINCT g.ogc_fid AS id, g.geog4326 AS geog
FROM grid g, tracks t
WHERE t.path_buff_geog && g.geog4326 AND ST_Intersects(t.path_buff_geog, g.geog4326);
SQL
ActiveRecord::Base.transaction do
ActiveRecord::Base.connection.execute(drop_sql_cmd)
ActiveRecord::Base.connection.execute(create_sql_cmd)
end
end
end
如果调用 rake 为
bundle exec rake grids:create_grid