ActiveRecord属性消失的情况

按照https://stackoverflow.com/a/24496452/102675中的说明,我结束了以下内容:

namespace :db do desc 'Drop, create, migrate, seed and populate sample data' task seed_sample_data: [:drop, :create, :migrate, :seed, :populate_sample_data] do puts 'Sample Data Populated. Ready to go!' end desc 'Populate the database with sample data' task populate_sample_data: :environment do puts Inspector.column_names.include?('how_to_fix') # create my sample data end end 

正如您所料,如果我运行bundle exec rake db:populate_sample_data ,我就会成功

但是如果我运行bundle exec rake db:seed_sample_data我得到所有的迁移输出然后是false 。 换句话说,我看不到Inspector属性how_to_fix即使它确实存在,如另一个rake run所certificate的那样。 我的属性去了哪里?

我的猜测是这是一个“缓存”问题。 你可以试试以下吗?

 task populate_sample_data: :environment do Inspector.reset_column_information # ... end 

PS我们曾经有过类似的问题,使用具有完全相同模式的不同数据库(除了一些列,除了这里和那里)