Ruby on rails 模拟属性“MyClass.MyObjet.MyProperty”以替换旧调用
我更改了Rails模型中的一些引用,以停止使用某些行为(来自CarrierWave)。我不想破坏我的旧密码。我希望参考资料保持不变 我的实际通话内容如下:Ruby on rails 模拟属性“MyClass.MyObjet.MyProperty”以替换旧调用,ruby-on-rails,ruby,object,Ruby On Rails,Ruby,Object,我更改了Rails模型中的一些引用,以停止使用某些行为(来自CarrierWave)。我不想破坏我的旧密码。我希望参考资料保持不变 我的实际通话内容如下:Photo.picture.url 其中,picture本身就是一个模型。Picture类现在已被弃用,并替换为模型中同名的属性 我想使用Photo.picture.url语法访问直接定义到Photo模型中的picture属性和url子属性 这是我的密码: class Photo < ApplicationRecord ##====
Photo.picture.url
其中,picture
本身就是一个模型。Picture
类现在已被弃用,并替换为模型中同名的属性
我想使用Photo.picture.url
语法访问直接定义到Photo
模型中的picture
属性和url
子属性
这是我的密码:
class Photo < ApplicationRecord
##============================================================##
## Associations
##============================================================##
belongs_to :photoable, polymorphic: true
acts_as_list scope: [:photoable_id, :photoable_type]
## This is what Im really not sure how to do it
def picture.url
"#{self.name}"
end
end
班级照片
事实上,当我打电话给Photo.picture时,我有一个命名者
如何在模型中定义属性,使旧语法仍然有效
Picture = Struct.new(:url)
def picture
@picture ||= Picture.new(name)
end
你可以这样做
Picture = Struct.new(:url)
def picture
@picture ||= Picture.new(name)
end
“返回我自己字符串的自定义属性”-您能举个例子吗?方法调用看起来怎么样?您期望的结果是什么?@Stefan我想要一个类似Object.Object.MyProperty的调用,该调用将返回URL(字符串)。在我的示例中,它将是photo.picture.url,但在我的“picture”之前是一个具有一组属性的对象。“Picture”对象已经不存在了。因此,photo.Picture
会立即引发一个NoMethodError
。@Stefan完全正确@Stefan我编辑了我的问题,以便更清楚地解释我的问题“一个返回我自己字符串的自定义属性”——你能举个例子吗?方法调用看起来怎么样?您期望的结果是什么?@Stefan我想要一个类似Object.Object.MyProperty的调用,该调用将返回URL(字符串)。在我的示例中,它将是photo.picture.url,但在我的“picture”之前是一个具有一组属性的对象。“Picture”对象已经不存在了。因此,photo.Picture
会立即引发一个NoMethodError
。@Stefan完全正确@Stefan我编辑了我的问题,以便更清楚地解释我的问题。此外,您可能希望使用picture
方法。此外,您可能希望使用picture
方法。