【问题标题】:RoR Faker Information Not DisplayingRoR Faker 信息不显示
【发布时间】:2016-09-25 21:46:34
【问题描述】:

我安装了 'faker' gem,但是当我使用它 (Faker::Book.name) 时,它不会显示随机名称,而只显示一个字符串 "Faker::Book"

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

代码运行时,Job Title 始终为“Faker::Book”

【问题讨论】:

  • 你试过用大括号括起来Job.create(name: { Faker::Book.name } , description: { Faker::Lorem.sentence(7) }, business_id: 1)
  • 刚试过,语法错误,意外'}',期待=> ...eate(name: { Faker::Book.name }, description: { Faker::Lorem...
  • 首先"Faker::Book" 是一个文字字符串,因此除非您调用 eval 否则永远不会对其进行评估。其次,您不能使用 Job.where(name: Faker::Book) - Faker::Book 是一个类 - 调用 name 或任何其他生成器方法将生成一个新的唯一值。
  • Max,我正在调用 Faker::Book.name,但返回值是“Faker::Book”,而不是类调用中的随机值。
  • 刚刚开始工作 - 存在版本问题 -> 我指定了正确的最新版本并重新运行捆绑安装。我认为关于 Book.name、Book.title 等的版本可能发生了变化另外,直接调用 Faker::Book 来填充 db 不是一个好方法,所以我分配给局部变量并使用该变量来填充 Job .create 感谢大家早上的快速回复!!!

标签: ruby-on-rails faker


【解决方案1】:

"Faker::Book" 不能存储到 db 中,它的 name 方法只是选择一个随机的 name 值,所以它不能在 where 子句中通过类名来匹配,所以你只需尝试定义一些 constance name 部分,并且匹配它:

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

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2019-01-10
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多