这个方法只添加一个标签,但我想要多个标签!

时间:2011-03-31 22:01:28

标签: ruby-on-rails ruby ruby-on-rails-3 tags

我的视频模型中有这种方法:

def assign_topics
  if @topic_names
    self.topics = @topic_names.map do |name|
      Topic.find_or_create_by_name(name)
    end
  end
end

topic_names作为虚拟属性。这样做,每当我添加一个新主题时,它似乎用新的主题替换旧主题。我不希望这种情况发生。我希望它添加一个新主题。我怎么能这样做?

请注意,这与我的关联不一样。我通过关联正确实现了has_many。

1 个答案:

答案 0 :(得分:1)

没关系,我想通了:

def assign_topics
  if @topic_names
    self.topics << @topic_names.map do |name|
      Topic.find_or_create_by_name(name)
    end
  end
end