【问题标题】:Class Initialization with Faker Gem使用 Faker Gem 进行类初始化
【发布时间】:2013-05-07 05:17:32
【问题描述】:

我创建了一个类,它会在创建类的实例时使用 faker gem 自动填充数据。我无法让 Person 对象填充。这可能是一个笨拙的语法错误。

require 'rubygems'
require 'faker' 

class Person
  attr_accessor :firstname , :lastname, :phonenumber, :workaddress, :bio, :email

  def initialize(firstname = Faker::Name.first_name ,
    lastname = Faker::Name.last_name,
    phonenumber = Faker::PhoneNumber.phone_number,
    workaddress = "#{Faker::Address.street_name}, 
        #{Faker::Address.city}, #{Faker::Address.state_abbr}, #{Faker::Address.zip}",
    bio = 'bla bla bla',
    email = Faker::Internet.email)
  end

end

我在 ruby​​ 解释器中运行了上面的代码,但我无法初始化 Class 属性,以下产生 nillClass 而不是 String。

p = Person.new
puts p.firstname.class

工作解决方案:

def initialize(firstname = Faker::Name.first_name ,lastname =Faker::Name.last_name,phonenumber = Faker::PhoneNumber.phone_number,workaddress = "#    {Faker::Address.street_name}, #{Faker::Address.city}, #{Faker::Address.state_abbr}, #{Faker::Address.zip}",bio = "#{Lolem.new.words(7)}", email = Faker::Internet.email)
    @firstname = firstname
    @lastname = lastname
    @phonenumber = phonenumber
    @workaddress = workaddress
    @bio = bio
    @email = email
end

【问题讨论】:

    标签: ruby faker


    【解决方案1】:

    您的initialize 方法中必须有代码来初始化您的属性,例如:

    def initialize(firstname = Faker::Name.first_name, ...)
      @firstname = firstname
      # ...
    end
    

    你只是在初始化方法中初始化参数,什么都不做。

    【讨论】:

    • 谢谢,在添加 @firstname = firstname 和其余变量后,它现在可以工作了。
    猜你喜欢
    • 2012-12-22
    • 2018-02-02
    • 1970-01-01
    • 2015-02-11
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2015-04-24
    相关资源
    最近更新 更多