2016-05-27 28 views
0

我安裝了「騙子」的寶石,但是當我用它(法克爾:: Book.name)它不會顯示一個隨機的名字,但只有一個字符串「法克爾::書」回報率法克爾信息不顯示

LIB>任務> data_populate

require 'colorize' 

namespace :data_populate do 

namespace :populate do 
    desc "Populate all model data set" 
    task :all => :environment do 
     require 'faker' 
     puts "\n'Populating Model Data'".yellow 
     Job.where(name: "Faker::Book").destroy_all 
     10.times do |l| 
      Job.create(name: Faker::Book.name, description: Faker::Lorem.sentence(7), business_id: 1) 
     end 
    end #all end 
end #populate end 
end #end rake dashboard 

當代碼運行時,職位總是「法克爾::書」

+0

您是否嘗試過在大括號 包裝 'Job.create(名稱:{法克爾:: Book.name}描述:{法克爾:: Lorem.sentence (7)},business_id:1)' –

+0

剛試過,給我 語法錯誤,意外的'}',期待=> ... eate(name:{Faker :: Book.name},description:{Faker :: Lorem ... –

+0

首先''Faker :: Book「'是一個文字字符串,因此除非您對它調用eval,否則永遠不會被評估。其次,你不能使用'Job.where(name:Faker :: Book)' - Faker :: Book是一個類 - 調用'name'或任何其他生成器方法將生成一個新的唯一值。 – max

回答

0

"Faker::Book"不能被存儲到數據庫,它的名字方法只需要選擇一個隨機命名的值,所以它不能通過類名稱在where子句中匹配,所以您只需嘗試定義s青梅康斯坦斯名部分,並匹配了它:

Job.where("name LIKE 'faker%'").destroy_all 
10.times do |l| 
    Job.create(name: "faker " + Faker::Book.name, description: Faker::Lorem.sentence(7), business_id: 1) 
end