Ruby on rails 模拟属性“MyClass.MyObjet.MyProperty”以替换旧调用

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 ##====

我更改了Rails模型中的一些引用,以停止使用某些行为(来自CarrierWave)。我不想破坏我的旧密码。我希望参考资料保持不变

我的实际通话内容如下:
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
方法。