【问题标题】:What is a good strategy for symbols that might have spaces in them?对于可能包含空格的符号,什么是好的策略?
【发布时间】:2011-05-28 00:23:29
【问题描述】:

我想在将用户名保存到我的数据库之前将其转换为符号,这似乎是合乎逻辑的,因为该用户名将经常被引用并且我们希望节省内存。但是用字符串代替任何空格或其他非法字符有什么好的选择呢?还是应该保留一个字符串以避免麻烦?

【问题讨论】:

  • 请解释如何将用户名变成符号以及符号中如何包含空格。有点不清楚
  • 听起来像是过早的优化......但它不会起作用;)

标签: ruby-on-rails ruby


【解决方案1】:

将其保留为字符串,避免麻烦。

担心这种事情就是所谓的过早优化。此外,用户名不太可能在用户之间共享,因此无论如何您都不会节省太多内存。

【讨论】:

  • 过早的优化是编程中万恶之源(或至少大部分)。 - 克努特
【解决方案2】:

如果你的符号中绝对必须有空格,Ruby 会让你这样做:

foo = :"symbol with spaces" # => :"symbol with spaces"

foo.inspect # => ":\"symbol with spaces\""

【讨论】:

  • 真正的答案,但我也同意你应该不惜一切代价避免使用它。
  • @zeletic..符号将如何存储在数据库中...当查询检索时它们会作为符号返回吗?当我尝试这个Market.create(:name => :Test),Market.find(17).name 时,我得到了这个"--- :Test\n"
  • ActiveRecord 在写入数据库时​​将Symbols 序列化为 YAML,但在读取时不会反序列化。在这个 SO 问题中有一个简单的解决方法:stackoverflow.com/questions/2817145/…。或者更好的是,首先不要将Symbols 写入数据库:)
  • 同意,符号不必在数据库中!用户名作为字符串有什么问题?
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 2018-04-11
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-22
  • 1970-01-01
相关资源
最近更新 更多