Rails迁移:另一个表中基于行ID的参考值

时间:2018-08-14 00:05:46

标签: sql ruby-on-rails ruby activerecord migration

我目前正在项目中进行两次ActiveRecord迁移,我想将WhRuleAttributes表的一列中的值分配给WhRule表中的一列。

CreateWhRules迁移

class CreateWhRules < McflyMigration
 include Marty::Migrations

def change
 table_name = "apollo_wh_rules"

 create_table table_name do |t| 
  t.string    :name,            null: false
  t.pg_enum   :rule_type,       null: false, index: true
  t.text      :expression,      null: true
  t.datetime  :start_dt,        null: false, default: DateTime.now
  t.datetime  :end_dt,          null: true
  t.jsonb     :simple_guards,   null: false, default: {}
  t.json      :computed_guards, null: false, default: {}
  t.jsonb     :grids,           null: false, default: {}
  t.json      :results,         null: false, default: {}
  t.jsonb     :fixed_results,   null: false, default: {}
end 
end 
end

CreateWhRuleAttributes迁移

class CreateWhRuleAttributes < ActiveRecord::Migration[5.1]
 include Apollo::Migrations

def change
 table_name = :apollo_wh_rule_attributes

 create_table table_name do |t| 
  t.references  :wh_rule,                   null: false
  t.pg_enum     :warehouse_line_type,       null: true
end 

add_fk table_name, :wh_rules
end 
end

因此,在我的WhRuleAttributes表中,我有对wh_rule_id的引用,其中有多个对同一规则的引用,而所有规则都具有不同的Warehouse_line_type。我现在想做的是在我的WhRule迁移中,将每行中的simple_guards的值设置为其他表中该规则id引用的ALL Warehouse_line_types。

做到这一点的最佳方法是什么?谢谢您的帮助。

0 个答案:

没有答案