繁体   English   中英

Rails模型中的属性的属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM