Rails 3.1 - 指定不属于数据库的属性

时间:2011-12-09 16:18:54

标签: ruby-on-rails activerecord ruby-on-rails-3.1

新手问题 - 我有一个多态的资产模型(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会更好吗?这甚至会被视为属性吗?任何关于改进这个片段的想法都会受到赞赏。

1 个答案:

答案 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