Rails 3.1 - указание атрибутов, не являющихся частью базы данных - PullRequest
0 голосов
/ 09 декабря 2011

Вопрос новичка - у меня есть модель активов, которая является полиморфной (assemblytable_type, assemblytable_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 голосов
/ 09 декабря 2011

Непроверенные:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...