0

我想知道我是否可以在以下函数中以某种方式使“stat”成为变量:

  def stats(stat)
    self.items.sum(:stat) + self.stat
  end

我想知道如何使 self.items.sum(:stat) 中的 :stat 成为变量。我不确定语法。

对不起,如果这是一个可怕的新问题。

物品迁移:

class CreateItems < ActiveRecord::Migration
  def change
    create_table :items do |t|
      t.string :title

      t.text :content

      t.integer :price

      t.integer :strength
      t.integer :agility
      t.integer :intellect
      t.integer :will
      t.integer :perception

      t.integer :hearm
      t.integer :laarm
      t.integer :raarm
      t.integer :charm
      t.integer :llarm
      t.integer :rlarm

      t.integer :damage

      t.integer :hardpoints

      t.timestamps
    end
  end
end

字符迁移:

class CreateCharacters < ActiveRecord::Migration
  def change
    create_table :characters do |t|
      t.string :name

      t.text :bio

      t.integer :strength
      t.integer :agility
      t.integer :intellect
      t.integer :will
      t.integer :perception

      t.integer :hearm
      t.integer :laarm
      t.integer :raarm
      t.integer :charm
      t.integer :llarm
      t.integer :rlarm

      t.integer :currency

      t.integer :user_id      

      t.timestamps
    end
  end
end
4

1 回答 1

0

我确定你想要什么

def stats(stat)
  stat = stat.to_sym
  items.sum(stat) + read_attribute(stat)
end

stat = stat.to_sym只是为了确保它是一个符号,所以你可以传递一个字符串并且它仍然可以工作,但如果你只传递符号则不需要。

所以你应该把它称为

character.stats(:strength)或者character.stats('strength')

于 2012-07-25T21:47:51.167 回答