2016-04-16 25 views
0
def create 
    climates = ["beachy", "very cold", "dry", "tundra", "rain forest", "north pole"] 

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

    redirect_to destinations_path 
end 

私はユーザーが入力を介して新しいデータを作成するオプションを両方持ちたいと思っていますが、 "ランダム宛先"ボタンをクリックするオプションもあるようにして、Fakerデータを追加します。私のRailsコントローラでFakerを使用してランダムなデータセットを作る方法は?

これで、データベースに新しい行が作成されますが、データは入力されません。

Postgres DbとActiveRecordを使って、それは価値があります。

+0

fakerデータがデータベースに保存されていないと言っていますか? – margo

+0

はい、それは通り抜けたようには見えませんが、気候配列もあり、何も入っていません –

答えて

0

これは完全に間違っているかもしれませんが、これまで私のアプローチはFactoryGirlとFakerを組み合わせてこれを実現することでした。 FactoryGirlを使わなければ、それは明らかではありませんでした。しかし、FactoryGirlにあなたの他のenvをロードすることの厄介な副作用は私の理想ではありません。私のアプローチは:

は偽物とfactory_girl宝石は、あなたがそれを使用だことができますするENVのを指定する必要がありFactoryGirl初期化子で開発/生産グループ

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

に含まれていることを確認します。

allowed_envs = %(development staging) 

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

コントローラで、作成先を作成/作成します。

ユーザー偽物は、(工場/ destination.rb)からそうなります
fake_destination = FactoryGirl.build(:destination) 

:その後、

name { Faker::Name.last_name } 

し、あなたのオブジェクトの作成に関連する属性を使用します。


これは、はるかに単純な問題の長い解決策になります。 createは、の属性のハッシュではなく、ハッシュを期待し、多分それが何の属性がデータベースに保存されていないされていた理由です

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

1

あなたはのように?代わりにハッシュ括弧の通常の括弧を使用して試していません属性のハッシュ

関連する問題