首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails中创建嵌套记录时,如何输入一些逻辑?

在Rails中创建嵌套记录时,如何输入一些逻辑?
EN

Stack Overflow用户
提问于 2013-12-18 07:34:05
回答 1查看 33关注 0票数 1

我将bees作为beehive的嵌套属性,通过beelink链接

蜜蜂

代码语言:javascript
复制
has_many :beehives through :beelinks

和蜂箱

代码语言:javascript
复制
has_many :bees, through: :beelinks

当然还有beelink

代码语言:javascript
复制
belongs_to :bees
belongs_to :beehives

bee有一个名为description的字段

我有一个带有5个蜜蜂描述字段的beehive的嵌套表单,所以当我创建beehive时,我使用

代码语言:javascript
复制
@beehive.save

一只蜜蜂在数据库中只能存在一次。但是,如果新的蜂箱有一个现有的蜜蜂(新的蜜蜂和现有的蜜蜂匹配的描述),我想使用现有的蜜蜂创建beelink,而不是拒绝蜜蜂的创建(因此是蜂箱)

因为

代码语言:javascript
复制
@beehive.save

要拯救蜂箱和蜜蜂,我该放在哪里?

代码语言:javascript
复制
@beehive.bees.each do |b|
  Bee.where(description: b.description).first_or_create!
  Beelink.where(bee: b, beehive: @beehive).create
end

谢谢

EN

回答 1

Stack Overflow用户

发布于 2013-12-19 05:30:44

好吧,我不得不毁掉美丽的

代码语言:javascript
复制
@beehive.save

来制造这个可怕的怪物。

代码语言:javascript
复制
@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

如果有人有更好的解决方案,我很乐意接受

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20646855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档