Ruby on Rails:函数中的变量

时间:2012-07-25 21:21:09

标签: ruby-on-rails ruby variables model

我想知道我是否能以某种方式使“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

1 个答案:

答案 0 :(得分: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')