使用options hash初始化时,参数数量错误

时间:2016-10-30 17:08:13

标签: sql ruby oop

有时间问专家。我正在尝试为我的数据库播种。下面的代码给出了错误的参数数量错误,无法创建'类别'宾语。这是在此文件中创建对象期间第一次出现此错误。

@category1 = Category.new( {'description' => 'food'} )
@category1.save

这就是我的类别模型。

class Category

attr_reader :id,  :description, 

def initialize(options)
@id = options['id'].to_i
@description = options['description']
end

```

显然它期望零参数。但我用选项哈希初始化它。 I.d后来来自SQL。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我发现了问题

删除attr_reader列表末尾的逗号:

attr_reader :id,  :description, 

attr_reader :id,  :description

PS

只是错字

答案 1 :(得分:0)

问题是使用attr_reader的属性读取器定义末尾的尾随逗号。

如果你改变它:

  attr_reader :id,  :description,

到此:

  attr_reader :id, :description

它应该可以正常工作(至少在我的测试中是这样)。

AFAICT的原因是,使用逗号,整个定义成为attr_reader方法的参数。不确定它对该参数的作用(可能只能告诉更专业的rubyist), 但是在结果中,你的类没有接受任何参数的初始化方法。