Во-первых, не допускайте посторонней логики в свой контроллер:
def update
@inventory = Inventory.find(params[:id])
respond_to do |format|
if @inventory.update_attributes(params[:inventory])
flash[:notice] = 'Inventory was successfully updated.'
format.html { redirect_to(@inventory) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @inventory.errors, :status => :unprocessable_entity }
end
end
end
Затем обработайте атрибут instock с помощью обратного вызова для модели Inventory. Что-то вроде:
before_update :check_instock, :unless => Proc.new { |inventory| inventory.needed.nil? }
def check_instock
if needed < amount
instock = true
else
instock = false
end
end