2016-03-07 3 views
2

У меня есть следующая модель JobRequest :: Receipt.Как обновить атрибут BigDecimal в модели Rails?

Атрибут: amount является большим, как вы можете видеть.

# Table name: job_request_line_headers 
# 
# id      :integer   not null, primary key 
# type     :string(255) 
# job_request_id   :integer 
# merchant_company_id :integer 
# merchant_id   :integer 
# default_setting  :boolean   default(FALSE) 
# payment_amount   :decimal(12, 4) 
# payment_state   :integer   default(0) 
# payment_at    :datetime 
# deleted_at    :datetime 
# published_at   :datetime 
# delivered_at   :datetime 
# created_at    :datetime 
# updated_at    :datetime 
# related_line_header_id :integer 
# amount     :decimal(12, 4) 

Это то, что объект выглядит

> JobRequest::Receipt id: 24, type: "JobRequest::Receipt", 
> job_request_id: 19, merchant_company_id: nil, merchant_id: nil, 
> default_setting: false, payment_amount: nil, payment_state: 1, 
> payment_at: nil, deleted_at: nil, published_at: nil, delivered_at: 
> nil, created_at: "2016-03-07 06:58:49", updated_at: "2016-03-07 
> 06:58:49", related_line_header_id: nil, amount: 
> #<BigDecimal:7ffe424c7d48,'0.0',9(18) 

Если я пытаюсь обновить атрибут сумму в любом из перечисленных ниже способов него будет совершившим SQL, но это не будет обновлять значение

монтировку (основной)> JobRequest :: Receipt.last.update_attribute (сумма, 22,3)

монтировку (основной)> JobRequest :: Receipt.last.update_attribute (сумма, BigDecimal.new (22.3, 5)

сумма = BigDecimal.new (22.3, 5)

монтировку (основной)> JobRequest :: Receipt.last.update_attribute (Сумма, сумма)

любой из тех, кто будет возвращать количество устанавливается равным нулю ,

> [86] pry(main)> JobRequest::Receipt.last.amount 
JobRequest::Receipt 
> Load (1.7ms) SELECT "job_request_line_headers".* FROM 
> "job_request_line_headers" WHERE 
> "job_request_line_headers"."deleted_at" IS NULL AND 
> "job_request_line_headers"."type" IN ('JobRequest::Receipt') AND 
> "job_request_line_headers"."default_setting" = 'f' ORDER BY 
> "job_request_line_headers"."id" DESC LIMIT 1 
> => #<BigDecimal:7ffe3be9bc40,'0.0',9(18)> 

Любые подсказки, что я делаю неправильно?

ответ

0

Я просто сделал это на BigDecimal поле следующим образом на `herouku пробег рельсы console':

$ i = Item.find(47) 
$ i.selling_price = 25.00 
$ i.save! 
$ i.selling_price 

OUTPUT: BigDecimal:7f3cdfe1d598,'0.25E2',9(18)

Смежные вопросы