【问题标题】:How to random generated data into my table - Ruby on Rails如何随机生成数据到我的表中 - Ruby on Rails
【发布时间】:2013-09-26 20:28:44
【问题描述】:

假设我有包含以下列的表格:

class CreatePosts < ActiveRecord::Migration
  def change
    drop_table :posts

    create_table :posts do |t|
      t.string :First_Name
      t.string :Last_Name
      t.string :Company

      t.timestamps
    end
  end
end

我一直在寻找诸如faker、Randexp、伪造之类的宝石。但是数据到底是如何导入数据库的,目前我只玩过通过表单进入数据库的东西。

我假设它是通过控制器完成的:

def create
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
  end

但不确定具体如何,是否有任何示例或提示可以指导我完成此操作? 谢谢

【问题讨论】:

  • 所以您只想在表中插入“随机”条目?用于测试还是什么目的?

标签: ruby-on-rails ruby database random gem


【解决方案1】:

如果您需要使用它来引导您的应用程序,您可以使用seeds 文件或rake task,它们几乎相同。

我能想到你为什么要使用 Faker 的唯一原因是如果你想填充你的 Db 进行一些测试,是这样吗?如果是,那么方法可能会有所不同。

  1. 使用种子文件:

打开db/seeds.rb 文件并使用活动记录方法开始填充数据。

Post.create!(First_Name: 'Name', Last_Name: 'Last', Company: 'Company Name')

编写预期代码后,只需运行 rake db:seed 即可填充数据库。

【讨论】:

  • 是的,对不起,我将其用于测试目的。我有点困惑,您上面的代码中究竟会在哪里使用 faker?
  • 你会在你的 create 方法中使用 faker... 例如Post.create!({first_name: Faker::Name.first_name, last_name: Faker::Name.last_name, company: Faker::Company.name})
  • 此外,强烈建议您使用 Ruby/Rails 约定并使用小写蛇形名称命名您的方法(和数据库列),例如first_name 而不是 First_Name
  • 你把这些话从我嘴里说出来了!
【解决方案2】:

这真的取决于你想要做什么:

如果您只想用数据填充数据库进行测试,您可以使用种子。

或者,您可以创建一个 rake 任务来执行此操作,例如

Best way to fill development db in rails

或者创建一个模型来创建您可以从控制台调用的数据,例如使用 'ffaker' gem...

class RandomPost
  attr_reader :first_name, :last_name, :company

  def initialize options = {}
    @first_name = options[:first_name] ||= Faker::Name.first_name
    @last_name = options[:last_name] ||= Faker::Name.last_name
    @company = options[:company] ||= Faker::Company.name
  end

  def save
    Post.create({first_name: @first_name, last_name: @last_name, company: @company})
  end

end

如果您需要在控制台中创建多个随机帖子,您可以这样做...

10.times do
  post = RandomPost.new
  post.save
end

【讨论】:

  • 是的,我将其用于测试数据。晚餐菜鸟问题,但我将在哪里定义我的 RandomPost 类? ...我猜 10.times 会进入控制器,不确定我会将课程放在哪里?
  • 你可能只是把它放到模型目录中(记住不是所有模型都必须从 ActiveRecord 继承)... 10.times 是在控制台中使用的建议(例如'rails console'当您在项目目录中时,从命令行)...如果您想从 Web 界面创建随机数据,您需要以更灵活的方式处理它。
猜你喜欢
  • 2017-12-20
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多