使用选项散列初始化时错误的参数数量错误

问题描述:

有时间询问专家。我正尝试为我的数据库播种。下面的代码给了我错误数量的参数错误来创建'category'对象。这是在此文件中创建对象期间第一次引发此错误。使用选项散列初始化时错误的参数数量错误

@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 

```

Apperently,预计零个参数。但我正在用选项散列初始化它。 I.d来自SQL。

任何想法?

+0

尝试'def初始化(**选项)' –

+0

@OlegSobchuk:不,这不是问题。 –

+0

@SergioTulentsev是对的,这不是帮助。 – godhar

我发现问题

attr_reader列表的末尾删除逗号:

attr_reader :id, :description, 

attr_reader :id, :description 

PS

只是错字

+0

辉煌@Oleg ...谢谢 – godhar

+0

godhar,我建议你等一会再选择一个答案。您不想阻止其他答案或将仍在解答问题的人短路。没有急于。奥列格询问你的答案是否被行政主管部门选中,特别是在问题发布后不久,这种说法是不合时宜的。 –

问题是您的属性读取器定义与attr_reader结尾处的尾随逗号。

如果从此改变:

attr_reader :id, :description, 

这样:

attr_reader :id, :description 

它应该正常工作(至少在我的测试中表现)。

AFAICT原因是用逗号将整个定义成为attr_reader方法的一个参数。不知道它对这个参数做了什么(可能只能告诉更专家的rubyist),但是在结果中,你的类没有接受任何参数的初始化方法。