我正在使用Contact资源创建一个Rails应用程序,其中包含地址,状态和zip字段。还有用户可以输入电话号码的字段。在我用于获取灵感的另一个网站的表格上,用户可以指出手机是移动电话,家庭电话还是办公室电话,换句话说就是电话号码的类型。我想知道是否可以创建接受模型上其他字段的更多信息的字段,或者在这种情况下,电话应该是一个单独的模型(例如,联系has_many:电话),电话号码的类型是手机型号上的常规字段。
因为在我的应用中,用户has_one联系人,我宁愿将所有与手机相关的信息保存在联系人模型中,而不是让用户有__联系人,而是联系has_many:手机。
答案 0 :(得分:1)
使用其他模型是实现此目的的选项。另一个是创建一个存储电话号码的哈希。
class Contact
attr_accessible :phones
serialize :phones, Hash
end
然后你可以将每部手机存放在适当的密钥中,例如
contact = Contact.new
contact.phones = {home: '1234-1234', work: '1234-5678', mobile: '9876-5432'}
contact.save!
他们可以通过电话Hash访问:
contact.phone[:home] # => "1234-1234"
通过在模型上提供serialize
命令,ActiveRecord
将其序列化以便存储在数据库中。
因此,如果您在其表格上创建text
字段,它允许您将数组或哈希值存储到数据库中。
迁移将是:
rails g migration add_phones_to_contact phones:text
有关序列化的更多信息:api.rubyonrails.org/classes/ActiveRecord/Base.html