Я ненавижу задавать такой вопрос новичку, но я уверен, что я делаю что-то в корне неправильно, и мне трудно найти других, которые так же не понимают.
НОВЫЙ вид моей модели MCMPART требует от пользователя ввода значений для: длины и: ширины детали. Из этих значений я хочу получить: квадратные футы (: длина *: ширина / 144) и листовой металл: размер ножниц (: длина X: ширина). Для этого я изменил свою модель следующим образом:
class Mcmpart < ActiveRecord::Base
belongs_to :sheet
belongs_to :partloc
belongs_to :material
def squarefeet
self.squarefeet = self.length * self.width/144
end
def shearsize
self.shearsize = [self.length, self.width].join(' X ')
end
end
Контроллер - это просто универсальный каркас, но вот метод create:
def create
@mcmpart = Mcmpart.new(params[:mcmpart])
respond_to do |format|
if @mcmpart.save
format.html { redirect_to(@mcmpart, :notice => 'Mcmpart was successfully created.') }
format.xml { render :xml => @mcmpart, :status => :created, :location => @mcmpart }
else
format.html { render :action => "new" }
format.xml { render :xml => @mcmpart.errors, :status => :unprocessable_entity }
end
end
end
Чтобы уточнить структуру модели, вот файл миграции базы данных:
class CreateMcmparts < ActiveRecord::Migration
def self.up
create_table :mcmparts do |t|
t.string :partnumber
t.references :material
t.references :sheet
t.references :partloc
t.decimal :length, :precision => 10, :scale => 3
t.decimal :width, :precision => 10, :scale => 3
t.decimal :squarefeet, :precision => 10, :scale => 3
t.decimal :weight, :precision => 10, :scale => 3
t.string :shearsize
t.string :project
t.boolean :bus
t.timestamps
end
end
def self.down
drop_table :mcmparts
end
end
Я уверен, что кто-то сразу заметит мою проблему. Это создает виртуальный атрибут, который отображает только найти в моем представлении SHOW. Тем не менее, я хочу добавить для этого параметры: shearsize и: squarefeet в мою базу данных. Вместо этого я получаю нулевое значение для обоих атрибутов в моей базе данных. И поскольку это не атрибут экземпляра, как мне требуется, он не регулируется значениями точности / масштаба, установленными в моей базе данных, и поэтому отображает целых 8 цифр после десятичной точки.
Что-то мне нужно сделать в контроллере? Я пытался заменить self.shearsize на @ mcmpart.shearsize, но это просто приводит к сбою моих страниц.
Престижность первому человеку, который указал на мои ошибки новобранца (ов).
Спасибо,