我的产品型号属于电话,我想知道如何将虚拟属性加在一起。我可以创建一个产品,可以使用下面的代码通过它的号码查找或创建电话。
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
但是我不确定接下来会发生什么,或者这是不是我正在接受的。我正在尝试创建一个可以输入的字段:
Cow's Beef Jerky,555-323-1234
如果逗号分隔产品名称和电话,如果电话号码是新的,则会创建它。我是在正确的轨道上,下一步是什么?
感谢。
答案 0 :(得分:1)
你需要一个相应的setter:
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