[英]Attributes of attributes in a Rails model
我正在制作一个带有联系人资源,地址,州和邮政编码字段的Rails应用程序。 还有供用户输入电话号码的字段。 在另一个我启发使用的网站上的表单上,用户可以指示电话是移动,家用还是办公室,换句话说,电话号码的类型。 我想知道是否可以创建一个字段,以接受有关模型上其他字段的更多信息,或者在这种情况下,Phone应该是一个单独的模型(例如Contact has_many:phones),而电话号码的类型为Phone模型的常规字段。
因为在我的应用程序中有一个用户has_one联系人,所以我宁愿将所有与电话相关的信息保留在Contact模型中,而不要拥有用户has_one联系人和Contact has_many:phones。
使用其他模型是实现此目的的一种选择。 另一个是创建一个存储电话号码的哈希。
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!
并且可以通过电话哈希访问它们:
contact.phone[:home] # => "1234-1234"
通过在模型上提供serialize
命令, ActiveRecord
序列化以存储在数据库中。
因此,只要您在其表上创建text
字段,它就可以将数组或哈希存储到数据库中。
迁移将是:
rails g migration add_phones_to_contact phones:text
有关序列化的更多信息: api.rubyonrails.org/classes/ActiveRecord/Base.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.