将种子数据加载到Rails 3 Project中

问题描述

| 到现在为止,我一直在使用Fixtures以及一个rake任务来为我的数据库创建一些种子数据。这很好用,但是我突然遇到了奇怪的问题(例如在模型中获得1,2,3 ..的autogen id,然后在join模型中获得错误的id,使关联根本无法工作)。 因此,我想知道什么是更好的选择。我已经阅读了有关不同内容内容,以及有关播种数据的内容。 我的数据并没有真正共享相同的信息。就像必须按原样插入单独的条目。例如,认为我必须插入具有特定能力和技能的1000个用户。这需要一些联接模型和对关联的一些整洁处理,例如夹具。 那么,有没有比固定装置更好的方法来实现这一目标?     

解决方法

        这是我一直使用的三个不同选项。让我知道您的想法以及如何发展。祝一切顺利。 Github要点>>     ,        Rails 3提供了一些基本的播种功能。参见:http://ryandaigle.com/articles/2009/5/13/what-s-new-in-edge-rails-database-seeding 总结一下: 您可以将任何种子代码(在Ruby中,使用AR模型)放在ѭ0中 然后运行
rake db:seed
加载它(
rake db:setup
自动执行此操作) 在我的种子文件中,我倾向于将所有内容包装在事务中,并且还手动定义ID(假设数据库中没有现有数据)。序幕宝石的帽子提示。例:
ActiveRecord::Base.transaction do
  if User.count == 0 && Role.count == 0
    user = User.new :name => \"Admin\",:email => \"admin@example.org\",:password => \"password\",:password_confirmation => \"password\"
    user.id = 1
    user.save!
    user.confirmed_at = user.confirmation_sent_at
    user.save!

    role1 = Role.new :name => \'Admin\'
    role1.id = 1
    role1.save!

    role2 = Role.new :name => \'Member\'
    role2.id = 2
    role2.save!

    user.role_ids = [1,2]
    user.save!
  end
end
可能会有更好的方法! 在您的情况下,您可以从CSV文件或其他文件中加载数据并以编程方式创建模型对象。     ,        固定ID可能对数据库中的默认数据很有用。在@jits情况下,他不想弄乱ID和角色权限,因此需要在多个环境或设置中对ID进行固定和维护。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...