Ruby on rails 4 Rails插件。如何在插件任务期间将数据插入数据库?

Ruby on rails 4 Rails插件。如何在插件任务期间将数据插入数据库?,ruby-on-rails-4,activerecord,plugins,Ruby On Rails 4,Activerecord,Plugins,我需要为我的rails插件运行种子并将它们放入任务中。 下面的代码将空记录插入到表中 namespace :my_plugin do desc "Run seed for plugin" task :seed => :environment do settings = [ [ 'Detail', 'detail' ], [ 'Approximate', 'approximate' ] ] settings.each do |n

我需要为我的rails插件运行种子并将它们放入任务中。 下面的代码将空记录插入到表中

namespace :my_plugin do
  desc "Run seed for plugin"
  task :seed => :environment do
    settings = [
        [ 'Detail', 'detail' ],
        [ 'Approximate', 'approximate' ]
    ]
    settings.each do |name, anonym|
      Setting.create!( name: name, alias: anonym )
    end
  end
end
更新:

我已经找到了解决这个问题的办法

settings.each do |name, anonym|
  Setting.find_or_create_by(alias: anonym) do |setting|
    setting.name = name
  end
end

您已经将设置声明为数组,然后尝试对其进行迭代,就像对键、值存储所做的那样

您可以执行以下操作以使其正常工作

namespace :my_plugin do
  desc "Run seed for plugin"
  task :seed => :environment do
    settings = {'Detail' => 'detail',
                'Approximate' => 'approximate'}
    ]
    settings.each do |name, anonym|
      Setting.create!( name: name, alias: anonym )
    end
  end
end

您已经将设置声明为数组,然后尝试对其进行迭代,就像对键、值存储所做的那样

您可以执行以下操作以使其正常工作

namespace :my_plugin do
  desc "Run seed for plugin"
  task :seed => :environment do
    settings = {'Detail' => 'detail',
                'Approximate' => 'approximate'}
    ]
    settings.each do |name, anonym|
      Setting.create!( name: name, alias: anonym )
    end
  end
end

迭代器在这两种情况下都可以正常工作。我检查了它,只是插入了一行“{name}{anonyman}”
它显示:详细信息近似值您在设置模型时有任何验证吗?可能是一些验证失败了还是什么?我在这个modelIterator中没有任何验证,在这两种情况下都可以正常工作。我检查了它,只是插入了一行“{name}{anonyman}”
它显示:详细信息近似值您在设置模型时有任何验证吗?可能是一些验证失败了还是什么?我在这个模型中没有任何验证