2013-11-28 64 views
0

我有一个叫做的产品图像,它有一个属性叫做'src'。该属性存储ProductImage的URL。Ruby模块中的对象属性依赖关系?

所以,我想创建一个用来处理图像的模块,这样我就可以操纵ProductImagesLogoImages等。

这里是我到目前为止,但我很困惑:

module ImageManipulation 
    # Crop method 
    def crop 
    # First we need to have a MiniMagick instance so we can crop. 
    @minimagick = MiniMagick::Image.open(self.src) # Is this correct? 
    end 
end 

什么让我困惑的是,如果我们依靠self.src,这是,如果那是什么混合模块类的属性,这个模块是混合在一个对象不响应self.src的类中?我应该如何处理这个问题?

回答

2

什么让我困惑的是,如果我们依靠self.src,这是混合模块类的属性,如果这个模块内的对象不以self.src回应一类混合什么?

然后你会得到一个NoMethodError告诉用户你的模块到底发生了什么问题。

我该如何处理?

你不知道。该语言将通过提高NoMethodError来解决这个问题。

好吧,好吧,您不应该在代码中处理此。但是,你应该文件你的mixin的协议,是这样的:在ImageManipulation组合必须以srcURI表示图像的源实例回应

对象进行操作。

注意:self是Ruby中的隐含接收者,您不需要明确指定它。