0

Railsアプリケーション用にかなり大量のシードデータを準備する必要があります。私の限られた経験に基づいて、私はそれを行う2つの方法を知っていますが、どちらが最も柔軟性を提供するかを知りたいです。

1つは、Railsでそれを実行し、seeds.rbファイルで使用されている方法でシードデータを準備することです。

User.create!( name: "John" ) 

または、データのjsonドキュメントを作成することもできます。たとえば、Mongodbではjsonドキュメントをデータベースに直接インポートできることを知っています。他のデータベースについてはよくわかりません...

正規表現スクリプトを使用してjsonを次のようなものに変換することもできると思うので、jsonドキュメントが最も柔軟である可能性があることに気付きました。 User.create!( name: "John" )

しかし、私が考慮すべき他の問題があるかどうか疑問に思っています...

4

2 に答える 2

2

私はStackOverflowの初心者なので、上記のコメントに返信することはできません。

私は似たようなことをしようとしてきましたが、大量割り当て保護の問題が発生しました。私の研究で出くわしたアイデアは、以下を使用することでした。

without_protection: true

私はこれがレール3.2.3を使用して機能することを発見しました。例:

json = ActiveSupport::JSON.decode(File.read('db/seeds/data.json'))
json.each do |a|
     Country.create!(a['data'], without_protection: true)
end

http://snippets.aktagon.com/snippets/401-How-to-seed-your-database-with-JSON-YAML-data-in-Railsを参照してください

于 2013-03-10T10:24:27.673 に答える
0

考慮すべき問題の1つは、コンストラクターを介してすべてのパラメーターを常に渡すことができるとは限らないことです。このことを考慮:

class User
  include Mongoid::Document

  field :name
  field :role

  validates :name, presence: true
  validates :role, presence: true

  attr_accessible :name
end

のようなものがあるUser.create({name: 'John', role: 'admin'})場合、役割を割り当てることができないため、シードは失敗します。

于 2013-01-28T21:41:27.107 に答える