我将bees作为beehive的嵌套属性,通过beelink链接
蜜蜂
has_many :beehives through :beelinks和蜂箱
has_many :bees, through: :beelinks当然还有beelink
belongs_to :bees
belongs_to :beehivesbee有一个名为description的字段
我有一个带有5个蜜蜂描述字段的beehive的嵌套表单,所以当我创建beehive时,我使用
@beehive.save一只蜜蜂在数据库中只能存在一次。但是,如果新的蜂箱有一个现有的蜜蜂(新的蜜蜂和现有的蜜蜂匹配的描述),我想使用现有的蜜蜂创建beelink,而不是拒绝蜜蜂的创建(因此是蜂箱)
因为
@beehive.save要拯救蜂箱和蜜蜂,我该放在哪里?
@beehive.bees.each do |b|
Bee.where(description: b.description).first_or_create!
Beelink.where(bee: b, beehive: @beehive).create
end谢谢
发布于 2013-12-19 05:30:44
好吧,我不得不毁掉美丽的
@beehive.save来制造这个可怕的怪物。
@beehive = Beehive.create(attributes: params[:beehive][:attribues])
params[:beehive][:bees_attributes].each do |key, hash|
hash.each do |k, description|
bee = Bee.where(description: description).first_or_create
Beelink.where(bee: bee, beehive: @beehive).first_or_create
end
end如果有人有更好的解决方案,我很乐意接受
https://stackoverflow.com/questions/20646855
复制相似问题