这两个我都觉得不是好的选择……
我这明天如果没任务也去搞~
我觉得白名单写进 Model 好,不然控制器还得知道 Model 的属性。用了 attr_accessible 之后,控制器知道 role 就行了,相当于打包属性组。
为什么要手工管理软件呢
我觉得有 end 挺好,用 snippets 不用手敲,每次看见 end 会让自己有种安定感,就像开辟一个工作区一样
class Terminal
  # Example:
  # Terminal.set_pricings({
  #   "A" => {1 => 2.0, 4 => 7.0},
  #   "B" => {1 => 12.0},
  #   "C" => {1 => 1.25, 6 => 6.0},
  #   "D" => {1 => 0.15}
  # })
  def self.set_pricings(pricings)
    @pricings = pricings
  end
  def self.pricings
    @pricings
  end
  def initialize
    @products = {}
  end
  def scan(name)
    @products[name] = @products[name].to_i + 1
  end
  def total
    result = 0
    @products.each do |name, number|
      result += self.class.item_cost(name, number)
    end
    result
  end
  def self.item_cost(name, number)
    pricings[name].keys.sort.reverse.inject(0) do |sum, package|
      if number / package > 0
        sum += ((number / package) * pricings[name][package])
        number = number % package
      end
      sum
    end
  end
end
require 'test/unit'
require 'terminal'
class TerminalTest < Test::Unit::TestCase
  def setup
    Terminal.set_pricings({
      "A" => {1 => 2.0, 4 => 7.0},
      "B" => {1 => 12.0},
      "C" => {1 => 1.25, 6 => 6.0},
      "D" => {1 => 0.15}
    })
  end
  def test_should_get_cost
    terminal = Terminal.new
    terminal.scan 'A'
    assert_equal 2.0, terminal.total
    terminal.scan 'A'
    assert_equal 4.0, terminal.total
    2.times{ terminal.scan 'A' }
    assert_equal 7.0, terminal.total
  end
  def test_multi_item_cost
    assert_mult_scan_cost_equal 32.40, 'ABCDABAA'
    assert_mult_scan_cost_equal 7.25, 'CCCCCCC'
    assert_mult_scan_cost_equal 15.40, 'ABCD'
  end
  def assert_mult_scan_cost_equal(expected, names)
    terminal = Terminal.new
    names.each_char do |name|
      terminal.scan name
    end
    assert_equal expected, terminal.total
  end
end
        eval 得不必要,Hash 就能解决
在我看来 @fsword 的言论没有问题。楼主专门发个道歉贴但同时想封别人的嘴真的有意识到问题吗?
String 编码,数据库连接编码,数据库编码,数据库表单编码……
有编码的地方很多,一个个排除
我喜欢周末听着音乐冲杯咖啡然后 bundle update
#10 楼 @clearJiang 对图片不熟,jpeg 还有压缩空间?

试试看
到 gravatar 上传常用头像
=> Ctrl-C to shutdown server
ruby-china 对国内 ruby 发展挺重要的
#22 楼 @feitian124 可以看到历代头像,同时管理多个邮箱,而且随时都能切换回去,这个功能绝大部分自建头像是做不到的~
现在打开 gravatar 头像列表就想起当时设这个头像的心情。

晒一下历代头像,每个头像背后都有一段记忆
现在应该有了
#3 楼 @tassandar 不冲突,顺便可以把 cache 放到 redis 上,cache 现在不用以后也要用的
#3 楼 @tassandar 不冲突,顺便可以把 cache 放到 redis 上,cache 现在不用以后也要用的