/ / Ruby on Rails: variables dans les fonctions - ruby-on-rails, ruby, variables, model

Ruby on Rails: variables dans les fonctions - ruby-on-rails, ruby, variables, model

Je me demande si je peux en quelque sorte faire de "stat" une variable dans la fonction suivante:

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

Je me demande comment faire: stat dans self.items.sum (: stat) une variable. Je ne suis pas sûr de la syntaxe.

Désolé si c'est une question horriblement newbish.

Migration des articles:

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

Migration des personnages:

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

Réponses:

0 pour la réponse № 1

Je suis sûr de ce que tu veux

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

stat = stat.to_sym est juste pour s’assurer que c’est un symbole, ainsi vous pouvez passer une chaîne et cela fonctionnera toujours, mais ce n’est pas nécessaire si vous ne transmettez que des symboles.

alors vous devriez l'appeler comme

character.stats(:strength) ou character.stats("strength")