gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中传递动态参数?

转载 作者:搜寻专家 更新时间:2023-10-30 20:25:30 25 4
gpt4 key购买 nike

我想要动态预定义我的一些模型属性。我有各种模型。现在我希望我的 Bill 模型使用其他模型实例创建对象。

模型:

    leave.rb        # belongs_to :residents
resident.rb # has_many:leaves,has_many:bills,has_one:account
bill.rb # belongs_to:residents
rate_card.rb # belongs_to:hostel
account.rb # belongs_to:resident
hostel.rb

现在这是我的账单 Controller 创建方法:

def create
@bill = Resident.all.each { |resident| resident.bills.create(?) }
if @bill.save
flash[:success]="Bills successfully generated"
else
flash[:danger]="Something went wrong please try again !"
end
end

我想使用所有模型构建账单例如:

resident.bills.create(is_date:using form,to_date:using form,expiry_date:using form,amount:30*(resident.rate_card.diet)+resident.rate_card.charge1+resident.rate_card.charge2)+(resident.account.leaves)*10+resident.account.fine)
///////Is this possible ?

如何在这里使用强参数?

请帮帮我,thxx..

最佳答案

如果你想在 createupdate 上calculated 属性,我认为你想要的这种逻辑的 Rails 方法是使用 callbacks delete,表示依赖于其他模型的属性。例如:

class Bill < ActiveRecord::Base
...
before_create :set_amount

...

protected

def set_amount
self.amount = 30 * self.resident.rate_card.diet + self.resident.rate_card.charge1 + self.resident.rate_card.charge2 + (self.resident.account.leaves) * 10 + self.resident.account.fine
end
end

如果您希望在更新记录时也使用此逻辑,那么您应该使用 before_save 而不是 before_create

执行此操作后,您应该接受 Bill 模型的常用参数(strong),如:

def bill_params
params.require(:bill).permit(:is_date, :to_date, :expiry_date)
end

所以你的 create 调用应该是这样的:

resident.bills.create(bill_params)

此外,请注意您的create action,您应该在BillResident< 上创建一个方法 使用交易同时创建所有账单的模型,因为您可能希望创建每个账单或不创建账单。这样,您的 BillsController 中就不会有 Resident.all.each 逻辑。

关于ruby-on-rails - 如何在 Rails 中传递动态参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36751276/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com