ngDoCheck
我想为用户提供一个通过输入创建新数据的选项,但我也希望有一个选项让他们点击“随机目的地”按钮,它会添加Faker数据。
现在,这会在我的数据库中创建一个新行,但它不会输入数据。
使用Postgres Db和ActiveRecord,这是值得的。
答案 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 }
然后在对象创建中使用相关属性。
然而,对于更简单的问题,这可能是一个很长的解决方案!