如何在我的Rails控制器中使用Faker来制作一组随机数据?

时间:2016-04-16 23:47:18

标签: activerecord faker

ngDoCheck

我想为用户提供一个通过输入创建新数据的选项,但我也希望有一个选项让他们点击“随机目的地”按钮,它会添加Faker数据。

现在,这会在我的数据库中创建一个新行,但它不会输入数据。

使用Postgres Db和ActiveRecord,这是值得的。

2 个答案:

答案 0 :(得分:1)

您是否尝试使用普通括号而不是哈希括号?,如下所示:

destination = Destination.create ({name: Faker::Name.last_name + " Island", climate: climates.sample})

也许这就是为什么没有在数据库中保存属性的原因,create期望属性的散列,而不是属性散列的散列。

答案 1 :(得分:0)

这可能是完全错误的,但我之前的做法是利用FactoryGirl与Faker结合来实现这一目标。没有使用FactoryGirl就不明显了。然而,它确实有一个令人讨厌的副作用,装载FactoryGirl与你的其他环境,我的不理想。我的方法是:

确保faker和factory_girl宝石包含在开发/生产组中

gem 'faker', '~> version'
gem 'factory_girl', '~> version'

在FactoryGirl初始化程序中,您可能需要指定允许其使用的环境。

allowed_envs = %(development staging)

if allowed_envs.include?(Rails.env)
 FactoryGirl.find_definitions
end

然后在您的控制器中,构建/创建您的目的地。

fake_destination = FactoryGirl.build(:destination)

将使用Faker,所以来自(factories / destination.rb):

name { Faker::Name.last_name }

然后在对象创建中使用相关属性。

然而,对于更简单的问题,这可能是一个很长的解决方案!