Отображение логики с одной модели в представлении другой в Rails? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть модель, статистика, которая имеет 6 статистик для модели персонажа.Пользователи могут вводить значения для Силы, Интеллекта и так далее.Я написал метод для автоматического расчета бонусов или штрафов на основе введенного счета.Вот логика бонуса Телосложения от моей Статистической модели:

def con_modifier
  (constitution.to_i - 10) / 2
end

Я отображаю информацию, собранную из Статистической модели, в моем виде персонажа и хочу увидеть бонус, поэтому я определил его вПоказывать метод в моей модели персонажей примерно так:

@con_modifier = @character.statistic.con_modifier

Я могу просматривать его в режиме символов без проблем.Но вот моя проблема.У меня есть другая модель, Fortitude, которая должна взять это число и использовать его для вычисления общего значения для сохранения Fortitude.Пока что вот что у меня есть:

def total
  fortitude_base.to_i + @con_modifier + magic.to_i + misc.to_i
end

Но затем я получаю эту ошибку:

nil can't be coerced into Fixnum

Так что, очевидно, это не вызывает правильную информацию.Есть идеи?Нужно ли мне определять его также в моем контроллере Fortitude, или я могу просто определить его в модели Fortitude и назвать его в представлении таким образом?Стойкость отображается в моем представлении символов, поэтому я подумал, что определение этой логики в методе Show в модели символов будет просто работать, но я уже несколько дней бьюсь над этой проблемой, но без прогресса.Спасибо!

1 Ответ

2 голосов
/ 21 сентября 2011

Передайте модификатор в качестве аргумента:

def total(con_mod)
  fortitude_base.to_i + con_mod + magic.to_i + misc.to_i
end

Тогда используйте его в другом месте:

@fortitude = Fortitude.whatever
@saving_throw = @fortitude.total(@character.statistic.con_modifier)
...