Ruby on Rails:在单个数据库单元中保存多个值

hel*_*llo 3 ruby database database-design ruby-on-rails relational-database

如何在Ruby on Rails应用程序中的单个单元格记录中保存多个值?

如果我有一个Exp名为:Education,Experience和的列的表,Skill如果我希望用户在一行中存储多个值,例如:教育机构或技能,那么最佳做法是什么?

我想让用户使用多个文本字段,但应该进入相同的单元格记录.

例如,如果用户具有多种技能,那么这些技能应该在一个单元格中?这会是最好的还是会更好,如果我创建一个新技能表?

请指教,

谢谢

Raj*_*kam 8

我不建议在同一个数据库列中存储多个值.它会使查询变得非常困难.例如,如果您想查找具有特定技能集的所有用户,则查询在可读性和性能方面都会笨拙.

但是,仍然存在某些有意义的情况.

  • 当您想要允许变量数据点列表时
  • 您不会根据列表中的某个值查询数据

ActiveRecord内置了对此的支持.您可以存储Hash或存储Array在数据库列中.

  1. 只需将列标记为 Text

    rails g model Exp experience:text education:text skill:text
    
    Run Code Online (Sandbox Code Playgroud)
  2. 接下来,序列化Model代码中的列

    class Exp < ActiveRecord::Base
      serialize :experience, :education, :skill
      # other model code
    end
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,您只需保存HashArray在数据库字段中!

    Exp.new(:skill => ['Cooking', 'Singing', 'Dancing'])
    
    Run Code Online (Sandbox Code Playgroud)