- 浏览: 274826 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
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 25201,页面的测试。 假设某view中有一个表单,表单里有3个字段 ... -
BDD on Rails
2010-05-11 02:59 0首先,嘿嘿,我对敏捷 ... -
强大的 Rails 2 查询、搜索插件:SearchLogic
2010-04-20 23:31 5443发现还有人在看这个博客,这个 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 1438=======Rails2======= 用RSpec测试A ... -
Rails文件上传利器——paperclip笔记
2010-02-27 12:04 14935Githubhttp://wiki.github.com/th ... -
为SearchLogic添加一个remote_form_for方法。
2010-02-10 15:00 1391稍微看了一下,好像挺简单,只是处理了一下参数。 # A ... -
A Guide to Testing Rails Applications
2010-02-03 19:56 0什么是Fixtures fixtures允许你在测试运行之前往 ... -
reset/reload
2010-01-20 16:26 1132http://caboo.se/doc/classes/Act ... -
Acts As Taggable On Steroids
2010-01-20 13:53 2608参考着mephisto写blog程序 ... -
Active Record Validations and Callbacks
2009-10-18 02:45 2373参考链接:http://guides.ru ... -
Layout in Rails
2009-10-12 17:28 4736参考链接:http://guides.rubyonrails. ... -
Rendering in Rails
2009-10-10 02:10 4520参考链接:http://guides.rubyonrails. ... -
如何为Rails的views写测试。
2009-10-01 16:53 1114原文链接:http://weblog.jamisbuck.or ... -
Rails Form helpers
2009-09-28 03:31 5168参考链接:http://guides.ru ... -
rails2.3 routes笔记
2009-09-23 04:10 2838参考链接:http://guides.ru ... -
rails中分模块开发。
2009-09-18 14:48 2307我没事就喜欢拿blog练手,blog简单嘛。 嗯,其实这是 ...
相关推荐
AndroidBug修改总结涉及的内容主要包括以下几个方面: 1. **系统图标位置的调整**:在Android系统的定制开发中,开发者可能需要调整系统图标的显示位置。这通常涉及到对Android系统资源文件的修改,比如替换或编辑...
根据用户提出的修改意见,进行用户需求的跟踪修改。
提供的两个文件名称——"第一次使用《开贝影擎》.txt"和"开贝影擎v1.13(免费版)"——似乎与Bugfree改造主题关联不大,它们可能是指用于辅助编辑或生成项目报告的工具,如"开贝影擎"可能是一个视频编辑软件的版本,...
这个项目标题“贪吃蛇——改了几个bug”表明这是一个关于修复“贪吃蛇”游戏错误的工作。下面将详细讨论在游戏开发中可能遇到的bug类型以及修复它们的方法。 贪吃蛇游戏的基本机制是玩家控制一条蛇在有限的区域内...
- 开发者(Developer组)打开Bug时,只显示"Fixed"和"Rejected"这两个状态供选择(如图3-4所示)。 - 测试人员(QATester组)则看到"Closed"和"Reopen"状态(如图3-5所示),这确保了角色之间的职责明确,避免了...
"ECM_右键ascii比较bug修改"这个文件名可能指向一个具体的bug实例,其中用户在ECM系统中右键点击某项内容时,出现ASCII比较错误。ASCII是一种字符编码标准,用于将字符转换为数字,以便计算机处理。在ECM系统中,...
校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE版,可能有BUG)校验两个数据库表差异,并生成修改语句(BATE...
完成代码修改并更新到测试环境后,将Bug状态改为“已解决”,保存更改。 4. **测试人员关闭Bug** 测试人员查询“我创建的Bug”,查找状态为“已解决”的Bug进行回归测试。确认问题已修复后,将Bug状态改为“已关闭...
直接通过eclipse导入工具,然后添加POI包 博文链接:https://coderdream.iteye.com/blog/247033
如果一个BUG与其他多个功能或错误有关联,且影响范围广泛,那么它的关联度评分就会升高。 测试人员应该对上述各项指标进行详尽的评估,并与开发团队进行充分沟通。通过这种方式,双方可以对BUG的紧急程度和修复...
"增"即添加新的bug报告,"删"是删除不再需要的bug记录,"改"用于更新bug的状态或相关信息,"查"则涉及查询和筛选bug,以便进行跟踪和修复。 在技术选型上,Bugfree选择了JSP(JavaServer Pages)作为前端展示层,这...
综上所述,对“千年”服务端bug的分析和防范是一项系统工程,涉及到服务器架构、数据库管理、网络安全等多个方面。只有通过持续的努力和改进,才能确保服务的稳定,为玩家提供无瑕疵的游戏体验。对于任何游戏服务端...
在编程和软件开发中,"在修改代码时存在的bug"是一个常见的挑战,特别是在涉及图像处理的项目中。图像处理是一个复杂且技术含量高的领域,它涉及到计算机视觉、图像分析、算法设计等多个方面。C++是一种广泛用于这类...
uploadify 其中有一个bug是,已经上传完成的文件,点击取消上传后,后台是不会跑去删除已经上传的文件的,它没有调用oncancel事件,这部分只能自己去写代码实现删除,下面会讲到这一块。我们先建立好一些普通的功能...
如何用ChatGPT改bug
* 标识符:每一个测试用例都应该有一个唯一的标识符 * 测试项:测试用例应该准确的描述所需要测试的项以及其特征 * 测试环境要求:用来表征该测试用例需要的测试环境 * 输入标准:用来执行测试用例的输入需求 * 输出...
4. **AliVideoManageModify**:这个文件名可能是修复bug后的更新版本或者修改记录,可能包含了对播放器管理模块的改进。"Manage"通常与控制、配置或维护播放器的各个方面有关,而"Modify"则表示这些方面进行了调整或...
Bug处理流程规范 本规范旨在提高测试以及产品缺陷修改效率,避免出现搁置和遗漏的缺陷,从而提高产品的质量,降低质量检查和缺陷修改成本。 一、引言 本规范适用于研发部门(Confernece、Flash、监控)、质量保证...
禅道Bug提交管理规范 测试流程管理。 本文档定义了bug管理流程及其bug相关信息内容。
10. **修复策略**:修复bug通常包括复现问题、定位原因、修改代码、测试验证和上线部署等多个步骤,每一步都需要专业技能和严谨态度。 在淘宝这样的大流量平台,bug管理通常涉及严格的流程,包括bug报告、优先级...