我需要实现<和>模型的运算符。
代码是这样的:
class Product < ActiveRecord::Base
sizes_map = ["s", "m", "l", "xl", "xxl"]
def < (rhs)
return sizes_map.index(self.size_label) < sizes_map.index(rhs.size_label)
end
end
当我这样做时:
pl = Product.new :size_label => "s"
pr = Product.new :size_label => "l"
pl < pr
我收到以下错误:
NameError:未定义的局部变量或方法`sizes_map'
事实证明,在它的方法中看不到类范围的常量。
此外,产品:sizes_map引发相同的错误。
这里有什么问题?
答案 0 :(得分:4)
sizes_map
应该是常量。常量定义为大写。
class Product < ActiveRecord::Base
SIZES = ["s", "m", "l", "xl", "xxl"]
def <(rhs)
SIZES.index(size_label) < SIZES.index(rhs.size_label)
end
end
一些额外的建议:
self.
)来调用实例方法