PG::UndefinedColumn:如果将相同的数据库用于在 Rails 中相互连接的两个不同项目,则会出错

PG::UndefinedColumn: ERROR in case of same DB is used for two different projects which are connected with each other in Rails

我 运行 两个项目作为不同的存储库 git。一个是承认另一个是rails中的Web,两者相互连接,基本上使用相同的数据库。我只是在管理报告上进行了迁移,然后将其克隆到网络中。问题是,我将它部署在服务器上,但测试用例失败,错误提示

ActionView::Template::Error: PG::UndefinedColumn: ERROR:  column fees.discount does not exist

我只是不明白为什么会这样,在管理员中我有那个字段。

我认为 schema.rb 可能在这种情况下起作用。我不太确定。

这是我的迁移,

class AddDiscountToFeel < ActiveRecord::Migration[5.0]
   def change
     add_column :fees, :discount, :integer, default: nil, null: true
   end
 end

这是我在 development 中的模型字段:

 2.3.1 :008 > Fee.column_names
 => ["id", "booth_id", "amount", "description", "created_at", "updated_at", "discount"] 

这是我在 test 中的模型字段:

C238s-iMac:web c238$ RAILS_ENV=test rails c 
Loading test environment (Rails 5.0.0.1)
2.3.1 :001 > Fee.column_names
 => ["id", "booth_id", "amount", "description", "created_at", "updated_at", "discount"] 

这是我的错误截图:

任何帮助将不胜感激。

可以尝试 运行 将 discount 添加到 table 吗? bundle exec rake db:migrate

如果使用 heroku: heroku run rake db:migrate

是的,我是对的

我已经很长时间没有从管理员那里更新架构了,这就是我遇到这个问题的原因。

解决方案:从管理员复制schema.rb到网络仓库,因为两个项目使用相同的数据库。

希望答案对其他人也有帮助。