我试图在类似于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函数,然后处理创建标签并将帖子链接到它们。
我的执行有问题吗?
编辑:请不要为此推荐任何宝石。如上所述,我已经知道他们。我不想使用它们。
我已经通过Github上的代码库望去。这不是Rails newb最简单的代码。有没有任何直接的建议,你可以给我关于我目前的实施? – 2011-04-22 14:02:19