Математика со значениями строк таблицы на Ruby on Rails - PullRequest
1 голос
/ 18 августа 2011

Предположим, у меня есть таблица User, и в этой таблице у меня есть строки роста, веса и результата. В форме я ввожу значения роста и веса и хочу умножить эти два значения и сохранить их в строке результатов в базе данных. Я пытался что-то подобное

  def create
    @user = User.new(params[:user])
    @result = @user.height * @user.weight
    @user.result = @result

Но это не работает, что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 18 августа 2011

Я думаю, что было бы лучше, если бы вычисления выполнялись на фильтре before_save для модели.Используя первые 2 ответа, он должен выглядеть следующим образом:

users_controller.rb

def create
  @user = User.new(params[:user])
  if @user.save
    redirect_to @user
  else
    render :action => :new
  end
end

user.rb

before_save :compute_result

def compute_result
  result = height * weight
end
1 голос
/ 18 августа 2011

Вам лучше применить эту логику (умножить) в своей модели, написать метод для: before_save

Это путь Rails!

См. Эту документацию API: http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

0 голосов
/ 18 августа 2011

Убедитесь, что params [: user] имеет значения для: height &: weight keys. Если да, то вы должны установить поля height и weight как attr_accessible так:

user.rb

class User < ActiveRecord::Base
  attr_accessor :height, :weight
end

users_controller.rb

def create
    @user = User.new(params[:user])
    @result = @user.height * @user.weight
    @user.result = @result
    if @user.save
      redirect_to @user
    else
      render :action => :new
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...