gpt4 book ai didi

ruby-on-rails - 如果子数据不存在,如何获取父数据

转载 作者:行者123 更新时间:2023-12-05 03:40:08 26 4
gpt4 key购买 nike

我正在尝试获取子数据(如果它存在)但是当它为零时它将获取父数据。

我不想在 View 中对此进行硬编码,因为这需要类似以下内容:

if @product.parent
@product.price ? @product.price : @product.parent.price
end

所以我认为最好在产品模型中放置一些东西来覆盖该特定属性,例如:

# app/models/product.rb
def price
if self.parent
self.price ? self.price : self.parent.price
end
end

但是上面的方法是非常多余的,因为我必须为模型具有的每个属性都这样做,这将是很多功能。

有没有什么方法可以创建一个函数来执行适用于所有属性的相同功能?

如果子项不可用,我希望能够从父项获取任何属性

谢谢

最佳答案

您可以创建一个函数,首先在对象中查找属性,如果不存在,则在关联的父对象中查找属性

  def get_attribute(attr)
self.send(attr).present? ? self.send(attr) : self.parent.send(attr)
end

然后在对象中,您可以使用

获取属性
obj = Model.find(id)
obj.get_attribute(:attr_name)

关于ruby-on-rails - 如果子数据不存在,如何获取父数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68286741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com