0

我的产品模型属于电话,我想知道如何将两者结合在一起以获得虚拟属性。我可以创建一个产品,并可以使用下面的代码通过它的号码找到或创建电话。

Product < ActiveRecord::Base
  attr_accessible :name, :telephone_number
  belongs_to :telephone

  def telephone_number
    telephone.try(:number)
  end

  def telephone_number=(number)
    self.telephone = Telephone.find_or_create_by_number(number) if number.pr....
  end

现在对于我提出的getter方法:

  def product_with_number
    [name, telephone_number].join(',')
  end

但我不确定接下来会发生什么,或者这是否就是我要说的。我正在尝试创建一个可以输入的字段:

牛牛肉干,555-323-1234

在逗号分隔产品名称和电话的地方,如果电话号码是新的,它将创建它。我在正确的轨道上,下一步是什么?

谢谢。

4

1 回答 1

1

您需要一个相应的设置器:

def product_with_number=(str)
  parts = str.split(',')
  self.telephone_number = parts[0]
  self.name = parts[1]
end

那么你要做的就是这样的:

@p = Product.New
@p.product_with_number = "Cow's Beef Jerky, 555-323-1234"
@p.save
于 2013-05-31T16:31:18.097 回答