2011-04-21 72 views
0

我试图在类似于StackOverflow使用的一个Rails应用中实现标记系统(用户在自由格式文本框中的标记中输入)。我知道有宝石可以做到这一点,但我想尝试自己实现它的学习经验。我得到它的工作,但由于我是一个Rails新手,我担心我不是这样做的“正确的方式”。在Rails中实现标记系统

这里是我当前的实现:

def Post 
    attr_accessor :tag_names 

    has_and_belongs_to_many :tags 

    after_save :update_tags 

    private 
    def update_tags 
     tags.clear 

     if tag_names.to_s == '' 
     return 
     end 

     tag_names.split(/,/).each do |tag_name| 
     tag_name.strip! 
     tag = Tag.find_or_create_by_name(tag_name) 

     if !tags.exists?(tag.id) 
      tags << tag 
     end 
     end 
    end 
end 

这很容易让因为所有我需要做的就是把我的帖子对象的“tag_names加”属性我设置了标签后。当我保存post对象时,after_save事件触发并执行我的update_tags函数,然后处理创建标签并将帖子链接到它们。

我的执行有问题吗?

编辑:请不要为此推荐任何宝石。如上所述,我已经知道他们。我不想使用它们。

回答

0

看看acts_as_taggable如何实现相同的目的。你可以借用一些实现的想法。

+1

我已经通过Github上的代码库望去。这不是Rails newb最简单的代码。有没有任何直接的建议,你可以给我关于我目前的实施? – 2011-04-22 14:02:19