2016-05-27 29 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