好吧,所以我不能通过rails应用程序更新十进制值(模型类),但如果从rails控制台更改,它的工作原理非常好。我无法保存更新记录在数据库 这低于十进制值没有从rails应用程序更新,但从控制台更改后得到更新
def self.currentprice_cal(id)
totalstock = @[email protected]
@stockname.currentprice = @Buy_id.price.to_f*@Buy_id.numofstock.to_f
@stockname.save
#@stockname.update(currentprice: @stockname.currentprice.to_f)
@update_currentprice_files = Stock.update_current_price(id,@stockname.currentprice)
end
我的功能高清这是我的模型类
class CreateStocks < ActiveRecord::Migration
def change
create_table :stocks do |t|
t.string :stockname
t.decimal :currentprice, precision: 4, scale: 2
t.decimal :dayhigh, precision: 4, scale: 2
t.decimal :daylow, precision: 4, scale: 2
t.decimal :alltimehigh, precision: 4, scale: 2
t.decimal :alltimelow, precision: 4, scale: 2
t.integer :stocksinexchange
t.integer :stocksinmarket
t.timestamps
end
end
end
在轨安慰它工作正常
irb(main):015:0> u = Stock.first
Stock Load (0.5ms) SELECT "stocks".* FROM "stocks" ORDER BY "stocks"."id" ASC LIMIT 1
=> #<Stock id: 30677878, stockname: "Intel", currentprice: # <BigDecimal:5fbdbf0,'0.4552E2',18(45)>, dayhigh: #<BigDecimal:5fbd790,'0.552E2',18(45)>, daylow: #<BigDecimal:5fbd3d0,'0.2201E2',18(45)>, alltimehigh: #<BigDecimal:5fbd100,'0.457E2',18(45)>, alltimelow: #<BigDecimal:5fbca70,'0.2209E2',18(45)>, stocksinexchange: 47, stocksinmarket: 3, created_at: "2014-12-18 06:50:08", updated_at: "2014-12-19 06:04:18">
irb(main):016:0> u.currentprice
=> #<BigDecimal:5fbdbf0,'0.4552E2',18(45)>
irb(main):017:0> u.currentprice = 45.34
=> 45.34
irb(main):018:0> u.save
(0.2ms) begin transaction
SQL (0.5ms) UPDATE "stocks" SET "currentprice" = ?, "updated_at" = ? WHERE "stocks"."id" = 30677878 [["currentprice", 45.34], ["updated_at", "2014-12-19 07:18:34.214567"]]
(148.2ms) commit transaction
=> true
我不知道如果我在这里做得不对,我无法弄清楚
我从这里
@user_buying = User.find(@Buy_id.user_id)
@user_buying.cash = @user_buying.cash - @Buy_id.price*@Buy_id.numofstock.to_f
logger.info @Buy_id.user_id
@user_buying.save
#@user_selling = User.select('cash').where(:id => @Sell_id.user_id).first
@user_selling = User.find(@Sell_id.user_id)
@user_selling.cash = @user_selling.cash + @Sell_id.priceexpected*@Buy_id.numofstock.to_f
@user_selling.save
@stockused = StockUsed.create(:user_id => @Buy_id.user_id, :stock_id => @Buy_id.stock_id,:numofstock => @Buy_id.numofstock)
@stockused = StockUsed.create(:user_id => @Sell_id.user_id, :stock_id => @Sell_id.stock_id,:numofstock => [email protected]_id.numofstock)
@stockname = Stock.select('stockname,stocksinmarket,stocksinexchange,currentprice').where('id'=>id).first
User.currentprice_cal(id)
@notification = Notification.create(:user_id =>@Buy_id.user_id, :notification => "You bought #{@Buy_id.numofstock} stocks of #{@stockname.stockname} at the rate of $#{@Buy_id.price} per share", :seen => 1, :notice_type => 1)
@notification = Notification.create(:user_id =>@Sell_id.user_id, :notification => "You sold #{@Buy_id.numofstock} stocks of #{@stockname.stockname} at the rate of $#{@Sell_id.priceexpected} per share", :seen => 1, :notice_type => 1)
发布您调用'currentprice_cal'方法的代码。 – roob 2014-12-19 07:50:23
你从不使用你设置的'totalstock'变量?你在哪里设置'@ stockname'?通过调用模型方法生成的是什么sql? – Albin 2014-12-19 09:06:10
可能是另一个[strong-parameters-induced confusion](http://edgeapi.rubyonrails.org/classes/ActionController/StrongParameters.html)...请发布控制器代码,作为@roob询问 – 2014-12-19 16:35:32