我试图在嵌套属性保存到我的数据库之前修改它们。这个想法是,如果有人已经在服装数据库中提交了具有给定cid
的服装,我们应该拉出那个并将其用于当前协议。但是,通过调试,我发现嵌套属性数组根本没有变化。有什么想法吗?
谢谢! 马特
app/models/agreement.rb
class Agreement < ActiveRecord::Base
before_save :get_costumes
has_and_belongs_to_many :costumes, join_table: :agreement_costumes
accepts_nested_attributes_for :costumes, reject_if: proc { |attributes| attributes['cid'].blank? }
has_many :drycleans
accepts_nested_attributes_for :drycleans, allow_destroy: true, reject_if: :all_blank
def get_costumes
self.costumes.map! { |costume|
unless Costume.where(cid: costume.cid).nil?
Costume.where(cid: costume.cid).first
end
}
end
end
答案 0 :(得分:0)
你的除非条件永远不是true
。使用where语句,您将始终获得ActiveRecord。而且空的ActiveRecord也不是nil
。
尝试将该条件更改为:
unless Costume.where(cid: costume.cid).count == 0
或者:
unless Costume.find_by_cid(costume.cid).nil?