新手问题 - 我有一个多态的资产模型(assetable_type,assetable_id)。一种是产品。我想仅为产品资产添加标题;数据库中没有标题字段,因此想要从其他产品创建。我目前对这里概述的多态的另一面不感兴趣http://blog.hasmanythrough.com/2006/4/3/polymorphic-through(甚至不确定该技术是否是最新的。)
我想出了这个,但它似乎有点不雅(好吧,很多)。
def caption
if self.assetable_type=='Product'
p=Product.find(self.assetable_id)
t=p.header
t+=" - " + p.detail unless p.detail.nil?
end
return t
end
为此使用read_attribute
会更好吗?这甚至会被视为属性吗?任何关于改进这个片段的想法都会受到赞赏。
答案 0 :(得分:0)
未测试:
def caption
@caption ||= if self.assetable_type == 'Product'
product = Product.find(self.assetable_id)
caption = product.header
caption + = " - " + product.detail unless product.detail.nil?
end
end