Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 同时更新布尔值和创建新记录-Rails_Ruby On Rails_Rails Activerecord - Fatal编程技术网

Ruby on rails 同时更新布尔值和创建新记录-Rails

Ruby on rails 同时更新布尔值和创建新记录-Rails,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我需要更新布尔值,同时还要创建新记录。 我有一个名为Bank的控制器,Bank有3个属性,即账户:string、金额:decimal和提取:Boolean,客户可以在特定天数内投资一笔金额,在达到该天数后,他们可以带息提取该金额。我需要,当客户单击“撤消”时,撤消布尔值更新为真,并且创建并保存金额+利息,例如金额+10%,金额+10%结果还将有一个布尔值/标志Payment,“银行出纳员”可以将其更改为Payment:,现金支付完成后,为true 我如何实现上述目标,我是否应该为取款创建一个新的

我需要更新布尔值,同时还要创建新记录。 我有一个名为Bank的控制器,Bank有3个属性,即
账户:string
金额:decimal
提取:Boolean
,客户可以在特定天数内投资一笔金额,在达到该天数后,他们可以带息提取该金额。我需要,当客户单击“撤消”时,
撤消
布尔值更新为
,并且创建并保存金额+利息,例如
金额+10%
,金额+10%结果还将有一个布尔值/标志Payment,“银行出纳员”可以将其更改为
Payment:,现金支付完成后,为true


我如何实现上述目标,我是否应该为取款创建一个新的控制器和模型,以及代码是什么样子的?

无需创建一个新的控制器。只需在控制器中创建一个
draw
方法。我不太清楚你说的金额+利息到底是什么意思,但我猜你说的是数据库中的另一列。只需在数据库中添加像
amount\u和\u interest
这样的属性即可。另外,为
paid
添加另一列作为布尔值

def withdraw
the_bank = Bank.find(params[:id]) #or something similar to get the account one way or another 
the_bank.withdrawn = true 
the_bank.amount_with_interest = the_bank.amount * 1.1
the_bank.save
end

然后,出纳员可以在付款发送后的某个地方按下其他按钮,只需将“支付的银行”更改为“真”

就Rails方法和语法而言,我不需要对“银行”进行更新(:撤回,真),并将“银行”更改为“真”。创建“以将金额与利息一起保存?不一定。通常通过编辑页面更新模型的属性,然后发布到控制器中的更新路由,但这两个操作没有什么特别之处。我在上面的例子中所做的,本质上是创建一个新的更新操作,它只更改您想要更改的属性。就使用_bank.update(:deculled,true)而言,这是非常有效的语法,但_bank.create将创建银行模型的新实例。我已经更新了我的答案,添加了_bank.save这一行,这是使这些更改生效所需的全部内容。非常感谢,您的答案解释得很好,而且非常准确。