没有形式的Rails HABTM

时间:2012-08-29 21:56:50

标签: ruby-on-rails has-and-belongs-to-many hashtag

我有两个模型,Posts和Hashtags,处于HABTM关系中。

我的帖子控制器如下所示:

 def create
    @post = current_user.posts.new(params[:post])

    respond_to do |format|
      if @post.save
        format.html { redirect_to @post, :notice => 'Post was successfully created.' }
        format.json { render :json => @post, :status => :created, :location => @post }
      else
        format.html { render :action => "new" }
        format.json { render :json => @post.errors, :status => :unprocessable_entity }
      end
    end
  end

现在,当用户创建新帖子时,我想执行以下操作:

  • 检查主题标签,以'#'开头的单词
  • 如果主题标签已存在,请链接帖子和标签
  • 如果主题标签不存在,请将其添加到Hashtags,并链接Post和新添加的Hashtag

我想我做posts.new后必须这样做,但我不确定如何继续。我只是编辑@post对象吗?如果是这样,@ post.save应该采用什么格式来获取链接?

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分:0)

好的,如果您正确设置了关系,可以在帖子文本上运行正则表达式以获取所有主题标签,然后您可以为主题标签分配@post.hashtags = tags(标签是您从中提取的标签)文本)然后保存模型。

另一种(我说的不太正确的方式)是做同样的事情,但检查是否存在标签并创建它们并通过模型保存它们,但良好的做法要求你通过与之关系来实现这一点。 Post模型。