0

假设我有以下列的表格:

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,foregery之类的宝石。但是数据究竟是如何导入数据库的,到目前为止,我只玩过通过表单进入数据库的东西。

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

def create
  @post = Post.new(post_params)

  @post.save
  redirect_to @post
  end

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

4

2 回答 2

2

如果这是您引导应用程序所需的东西,您可以使用几乎相同的seeds文件或文件。rake task

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

  1. 使用种子文件:

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

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

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

于 2013-09-26T21:05:10.063 回答
0

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

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

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

在 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
于 2013-09-26T21:15:33.020 回答