- 浏览: 270081 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
问题见:http://yuan.iteye.com/blog/575569#comments 2楼
下面是过程。
入口是tag_list=
在vendor/plugins/acts_as_taggable_on_steroids/lib/acts_as_taggable.rb文件中。
定义在ActiveRecord::Acts:Taggable::InstanceMethods里。只有一行代码:
接着找class TagList:
位置:vendor/plugins/acts_as_taggable_on_steroids/lib/tag_list.rb
add方法:
嗯,原来add可以带个参数:parse=> false|true。
怎么没看到数据库操作……哦,对了,调用tag_list=的时候不保存的。应该是在save的时候。
嗯,在transaction里边加点东西:
然后找到Tag类,添加一个方法:
大功告成。
代码不知道还能改好看些不
呵呵..
学习一下,留
下面是过程。
入口是tag_list=
grep 'def tag_list=' ./ -r
在vendor/plugins/acts_as_taggable_on_steroids/lib/acts_as_taggable.rb文件中。
定义在ActiveRecord::Acts:Taggable::InstanceMethods里。只有一行代码:
def tag_list=(value) @tag_list = TagList.from(value) end
接着找class TagList:
grep 'class TagList' ./ -r
位置:vendor/plugins/acts_as_taggable_on_steroids/lib/tag_list.rb
class << self # Returns a new TagList using the given tag string. # # tag_list = TagList.from("One , Two, Three") # tag_list # ["One", "Two", "Three"] def from(source) returning new do |tag_list| case source when Array tag_list.add(source) else string = source.to_s.dup # Parse the quoted tags [ /\s*#{delimiter}\s*(['"])(.*?)\1\s*/, /^\s*(['"])(.*?)\1\s*#{delimiter}?/ ].each do |re| string.gsub!(re) { tag_list << $2; "" } end tag_list.add(string.split(delimiter))#分隔符就在这处理了 end end end end
add方法:
# Add tags to the tag_list. Duplicate or blank tags will be ignored. # # tag_list.add("Fun", "Happy") # # Use the <tt>:parse</tt> option to add an unparsed tag string. # # tag_list.add("Fun, Happy", :parse => true) def add(*names) extract_and_apply_options!(names) concat(names) clean! self end
嗯,原来add可以带个参数:parse=> false|true。
怎么没看到数据库操作……哦,对了,调用tag_list=的时候不保存的。应该是在save的时候。
Module ClassMethods #................ after_create :save_tags after_update :save_tags #............. end
Module InstanceMethods #...... def save_tags return unless @tag_list new_tag_names = @tag_list - tags.map(&:name) old_tags = tags.reject { |tag| @tag_list.include?(tag.name) } self.class.transaction do if old_tags.any? taggings.find(:all, :conditions => ["tag_id IN (?)", old_tags.map(&:id)]).each(&:destroy) taggings.reset end new_tag_names.each do |new_tag_name| tags << Tag.find_or_create_with_like_by_name(new_tag_name) end end true end #...... end
嗯,在transaction里边加点东西:
self.class.transaction do if old_tags.any? taggings.find(:all, :conditions => ["tag_id IN (?)", old_tags.map(&:id)]).each(&:destroy) taggings.reset Tag.clear_unused old_tags ####加这么一句 end new_tag_names.each do |new_tag_name| tags << Tag.find_or_create_with_like_by_name(new_tag_name) end end
然后找到Tag类,添加一个方法:
class Tag < ActiveRecord::Base #...... class << self #...... def clear_unused(tags=[]) if tags.empty? find(:all).select{|tag| tag.taggings.empty?}.each(&:destroy) else find(:all, :conditions => ['id IN (?)', tags.map(&:id)]).select{|tag| tag.taggings.empty?}.each(&:destroy) end end #...... end #...... end
大功告成。
代码不知道还能改好看些不
评论
5 楼
yuan
2010-01-28
机器人 写道
哈哈哈哈
呵呵..
4 楼
机器人
2010-01-27
哈哈哈哈
3 楼
yuan
2010-01-27
回信来了:
是我太粗心了……
引用
Hello Yuan,
Thank you for your work.
You can already use Tag.destroy_unused if you want to destroy tags that are no longer used. Set it to true in the environment somewhere:
Tag.destroy_unused = true
Does that do what you want?
Thank you for your work.
You can already use Tag.destroy_unused if you want to destroy tags that are no longer used. Set it to true in the environment somewhere:
Tag.destroy_unused = true
Does that do what you want?
是我太粗心了……
2 楼
夜鸣猪
2010-01-21
学习一下,留
1 楼
yuan
2010-01-20
发了个邮件
发表评论
-
rails测试中遇到的一些问题
2010-09-03 11:41 24551,页面的测试。 假设某view中有一个表单,表单里有3个字段 ... -
BDD on Rails
2010-05-11 02:59 0首先,嘿嘿,我对敏捷 ... -
强大的 Rails 2 查询、搜索插件:SearchLogic
2010-04-20 23:31 5348发现还有人在看这个博客,这个 SearchLogic 只支持 ... -
authlogic-openid
2010-04-20 00:32 0http://github.com/binarylogic/a ... -
测试驱动开发实战(authlogic学习笔记)
2010-04-17 00:06 0这会是个很cool的笔记 cucumber还不会用,只用R ... -
RoR简单培训。
2010-04-12 10:08 0目的 上周二Bob给大家从总体上概括了一下Rails的开发。我 ... -
用RSpec和Webrat为页面写测试
2010-03-10 23:26 0The RSpec Book 23章(不完全照书上记,而是我自 ... -
rails杂记
2010-03-08 11:36 1365=======Rails2======= 用RSpec测试A ... -
Rails文件上传利器——paperclip笔记
2010-02-27 12:04 14827Githubhttp://wiki.github.com/th ... -
为SearchLogic添加一个remote_form_for方法。
2010-02-10 15:00 1340稍微看了一下,好像挺简单,只是处理了一下参数。 # A ... -
A Guide to Testing Rails Applications
2010-02-03 19:56 0什么是Fixtures fixtures允许你在测试运行之前往 ... -
reset/reload
2010-01-20 16:26 1083http://caboo.se/doc/classes/Act ... -
Acts As Taggable On Steroids
2010-01-20 13:53 2547参考着mephisto写blog程序 ... -
Active Record Validations and Callbacks
2009-10-18 02:45 2318参考链接:http://guides.ru ... -
Layout in Rails
2009-10-12 17:28 4706参考链接:http://guides.rubyonrails. ... -
Rendering in Rails
2009-10-10 02:10 4463参考链接:http://guides.rubyonrails. ... -
如何为Rails的views写测试。
2009-10-01 16:53 1081原文链接:http://weblog.jamisbuck.or ... -
Rails Form helpers
2009-09-28 03:31 5125参考链接:http://guides.ru ... -
rails2.3 routes笔记
2009-09-23 04:10 2776参考链接:http://guides.ru ... -
rails中分模块开发。
2009-09-18 14:48 2259我没事就喜欢拿blog练手,blog简单嘛。 嗯,其实这是 ...
相关推荐
修改了几个bug
根据用户提出的修改意见,进行用户需求的跟踪修改。
这是我进行android定制开发工作,遇到的bug修改列表,包含linux,git,android framework,android app的相关问题。android版本包含android2.3,4.0,4.1,4.2等版本的bug修改和系统定制
QC后台配置按照用户组修改Bug状态,配置不同角色拥有不同Bug修改状态
校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE...
直接通过eclipse导入工具,然后添加POI包 博文链接:https://coderdream.iteye.com/blog/247033
ecm bug 修改 工具
bugfree改造的一些操作说明 内容写的还的错,转来分享
uploadify 其中有一个bug是,已经上传完成的文件,点击取消上传后,后台是不会跑去删除已经上传的文件的,它没有调用oncancel事件,这部分只能自己去写代码实现删除,下面会讲到这一块。我们先建立好一些普通的功能...
如何用ChatGPT改bug
jquery分页 纯前端分页 修改部分bug
dashboard修改bug
Jupiter是一个管理代码走查中bug的插件,类似mantis中对bug的管理。不同的是mantis管理的是黑盒测试中的bug,Jupiter管理的是白盒测试中的bug。Jupiter并不负责查找bug,只是管理bug。走查人员建立走查任务,发现bug...
航空售票系统,链接数据库,并且修改了Bug,航空售票系统修改Bug,带数据库文件,且有解释,希望可以帮助到大家
extjs4.1修改bug版本,已修改数字、日期等多个控件的问题
从网上下载的DBGridEh6.3,发现有几个Bug,我已做修正,使用效果良好,未见异常,现分享给有需要有朋友,直接安装即可。 2015-12-05 Bug修改********************* Bug 1. 点击列头排序后,行已经变了,但是却并不...
ChatGPT改bug,真香.zip
0.9.1对于这个属性的设置有bug <property name="houseKeepingSleepTime"> ${proxool.houseKeepingSleepTime}</value> 修改后的jar
bugfree 2.x版本 * 修改Bug的导出功能为xls格式 * 增加Bug通过Excel格式的导入功能 详情请看文件中readme文档。