ActiveRecord属性消失的情况

时间:2017-06-06 03:37:33

标签: ruby-on-rails ruby activerecord rake

按照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

正如您所料,如果我运行true

,我会获得bundle exec rake db:populate_sample_data

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

1 个答案:

答案 0 :(得分:2)

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

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

P.S。我们曾经遇到类似的问题,使用具有完全相同模式的不同数据库(除了某些列以外)