使用选项散列初始化时错误的参数数量错误
有时间询问专家。我正尝试为我的数据库播种。下面的代码给了我错误数量的参数错误来创建'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。
任何想法?
我发现问题
在attr_reader
列表的末尾删除逗号:
attr_reader :id, :description,
到
attr_reader :id, :description
PS
只是错字
辉煌@Oleg ...谢谢 – godhar
godhar,我建议你等一会再选择一个答案。您不想阻止其他答案或将仍在解答问题的人短路。没有急于。奥列格询问你的答案是否被行政主管部门选中,特别是在问题发布后不久,这种说法是不合时宜的。 –
问题是您的属性读取器定义与attr_reader结尾处的尾随逗号。
如果从此改变:
attr_reader :id, :description,
这样:
attr_reader :id, :description
它应该正常工作(至少在我的测试中表现)。
AFAICT原因是用逗号将整个定义成为attr_reader方法的一个参数。不知道它对这个参数做了什么(可能只能告诉更专家的rubyist),但是在结果中,你的类没有接受任何参数的初始化方法。
尝试'def初始化(**选项)' –
@OlegSobchuk:不,这不是问题。 –
@SergioTulentsev是对的,这不是帮助。 – godhar