【问题标题】:How to genrate multiple instances for related objects in model Rails?如何在模型 Rails 中为相关对象生成多个实例?
【发布时间】:2023-03-05 15:32:02
【问题描述】:

我有两个模型,一个是 Resident,另一个是 Bill

账单--> belongs_to:residents

居民-->has_many:bills

如何为所有居民生成账单?

点击立即生成按钮后的样子。必须为每个居民创建账单。 账单将使用三种模型创建

离开模型--> belongs_to:residents

属性--> start_date:datetime,end_date:datetime

rate_card 型号--> belongs_to:hostel

属性--> diet:integer,charge1:int,charge2:intcharge3:int

账户模型--> belongs_to:resident

attributes-->fine:int,leaves:结束开始日期与休假表的差异

账单模型--> belongs_to:resident

属性--> From_date:date,to_date:date,payable_amount:int,is_paid:bool

bill 包含可使用公式生成的应付金额:

应付金额:30*diet+charge1+charge2+charge3+fine*leaves

我现在应该如何为每个居民创建账单?? 我需要 create 方法的想法谢谢!!

请帮帮我..xD

【问题讨论】:

  • Resident.all.each { |resident| resident.bills.create }?
  • 所有居民都必须有账单,如果管理员按下生成账单按钮,这将在创建方法中起作用。! @sipkermann

标签: ruby-on-rails ruby ruby-on-rails-4 activerecord


【解决方案1】:

好吧,如果你只是想创建实例,你可以这样做:

bills = Resident.all.map {|resident| resident.bills.create }

并获得一组已创建的账单。

【讨论】:

  • 这可行,但如果residents 是一个大表,则会使用大量内存。如果不需要生成的新创建账单集合,请考虑使用Resident.find_each { |resident| resident.bills.create }
【解决方案2】:

我认为它想为所有居民生成账单:

Resident.all.each do |r|
  bill = Bill.new({:resident_id => r.id, :amount => value, :description => "Yadda yadda"})
  bill.save
end

它应该确保它添加了正确的属性,似乎它可能将账单信息作为参数传递给控制器​​。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 2011-08-11
    • 2019-08-01
    • 2010-10-15
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多