acts-as-taggable-on 接口使用

来源:互联网 发布:己知a b c=1,求证 编辑:程序博客网 时间:2024/06/05 00:52

创建了两个表,以及对应的两个 model
分别是:
ActsAsTaggableOn::Tag 有 id,name

上面是标签表。

ActsAsTaggableOn::Tagging 有 id,tag_id,taggable_id,taggable_type,tagger_id,tagger_type,context

上面是关联表(中间表)

tag_id 就是第一张表,标签表的 id

taggable 为被标记者

tagger 为标注者(我们没有用到)

context 为标签类型(我们只用到 tags,我会新增 skills)

新增字段:tag_list,skill_list,interest_list

用法:

1, (标签类型,对应中间表的 content 字段)

# Alias for acts_as_taggable_on :tags

acts_as_taggable

acts_as_taggable_on :skills, :interests

tag_list= (设置标签内容,会创建对应的中间表和 tag 表)

tag_list (看似是字段内容,其实是 tag 的内容拼接起来的)

skill_list (看似是字段内容,其实是 tag 的内容拼接起来的)

(上面设置的时候是字符串,读取的时候是数组)

2,

tag_list.add 在原字段的基础上多了 add 方法

tag_list.remove 在原字段的基础上多了 remove 方法

tags 复数形式(中间表)

skill_counts 统计

3,(在 1 的基础上维持输入时的顺序)

# Alias for acts_as_ordered_taggable_on :tags

acts_as_ordered_taggable

acts_as_ordered_taggable_on :skills, :interests

4,

tagged_with (类方法,参数是标签的名字,返回是有此标签的对应的类的实例)

5,

find_related_skills (实例方法,不带参数,返回和此调用者有类似标签的实例对象)

6,(动态新增 tag 类型,不推荐,tag 类型应该一开始就定好。)

set_tag_list_on

(下面几个方法不是动态生成的,平时也可用!)

tag_list_on (实例方法,参数为类型)

tags_on (实例方法,参数为类型)

tag_counts_on (参考 9)

tagged_with (参考 4)

7,(多一层关联,标签创建者,目前我们用不上)

acts_as_tagger

acts_as_taggable_on :locations (参考 7)

(下面几个除 tagged_with 外,均为实例方法)

tag

owned_taggings

owned_tags

tagged_with (参考 4)

locations_from

owner_tags_on

8,

skill_list_changed? (Rails 自带)

changes (Rails 自带)

changes.should

skill_list_change.should

9,

tag_counts_on (类方法,参数为标签类型)

tag_cloud (参考示例,自己定义的方法)

10,

remove_unused_tags (不使用的标签,要删除掉?)

force_lowercase (保存时强制转换成小写?)

force_parameterize (如何保存标签,类似 to_params)

strict_case_match (数据库查询标签时,大小写是否敏感)

delimiter (默认标签之间用‘逗号’分隔)

aats = ActsAsTaggableOn::Tagging.where(context: “skills”).group(:tag_id).order(‘count_all desc’).count;

aats.map do |key, value|

“#{value} – #{ActsAsTaggableOn::Tag.find(key).name}”

end

File.open(‘tag_list_statistics ‘, ‘w’) do |file|
aats.each do |key, value|
file.write( “#{value} – #{ActsAsTaggableOn::Tag.find(key).name}\n” )
end
end

0 0
原创粉丝点击