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

标签 ruby-on-rails ruby database activerecord

我想要动态预定义我的一些模型属性。我有各种模型。现在我希望我的 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/

相关文章:

ruby - 如何前置类方法

java - Java返回结果集的方法

java - jTable连接MySQL按钮报错

html - Mechanize gem : get html from other site => response html encoding issue

ruby-on-rails - 有没有办法手动序列化一个集合?

ruby-on-rails - ruby : importing two modules/classes of the same name

ruby-on-rails - Rails 5.1 部分中的参数数量错误(给定 3 个,预期 1..2)

ruby-on-rails - Ruby:带有验证的属性访问器的自定义实现

ruby - 让父类的方法访问子类的常量

database - 如何在Access中完成一个数字?