繁体   English   中英

has_many accepts_nested_attributes_for关联问题

[英]has_many accepts_nested_attributes_for association question

我是Rails的新手,如果这是一个n00b问题,我们深表歉意。

我正在创建必选的食谱管理站点,并希望每个食谱都有标签列表(其中db仅包含一个名为“ name”的字符串)。 这是我的模型,为您提供一些背景信息:

class Recipe < ActiveRecord::Base
  has_many :links
  has_many :tags, :through => :links
  validates :name, :ingredients, :directions, :presence => true
  accepts_nested_attributes_for :tags,
        :allow_destroy => true,
        :reject_if => :reject_tag

  def reject_tag(a)
      ...
  end
end

class Tag < ActiveRecord::Base
  has_many :links
  has_many :recipes, :through => :links
end


class Link < ActiveRecord::Base
  belongs_to :recipe
  belongs_to :tag
end

基本上,每个配方在链接连接器表中都有一个标签列表,反之亦然。 配方形式接受标签的嵌套属性。 我想要的行为是不要将重复的标签输入到标签表中,而只是创建一个指向现有标签的新链接。 因此,如果我有一个名称为“ Healthy”的标签,并输入一个新配方并向其中添加标签“ Healthy”,则我不想在标签表中重复“ Healthy”标签。 所需要的就是在链接表中将新配方链接到旧标签的新条目。

这样做的“轨道”方法是什么。 现在,我试图通过将隐藏输入字段中的recipe_id传递到:reject_if lambda并在此处保存新链接来对其进行破解。 它适用于编辑现有配方,但不适用于创建新配方,因为还没有recipe.id。 这感觉像是一个不好的方法,我只是不确定如何去做。 任何帮助表示赞赏。

我认为您的问题已在此处得到解答:是否可以使用find_or_create接受吗?

您可以仔细检查模型设计吗? 配方和标签似乎通过链接关系具有HABTM,而不是双向都有has_many。 一旦有了,就应该解决/容易解决重复问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM