- 浏览: 274776 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
参考着mephisto写blog程序,第一次看到[].collect(&:name)的写法,别笑我……书上没见过,代码又写得少,结果就是这样。
=============================================
答案在这里:http://www.infoq.com/cn/articles/ruby-open-classes-monkeypatching
主要记录一下acts_as_taggable_on_steroids的用法。
http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
首先,安装这个插件到项目中:
ruby script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git
使用
接着,执行:
ruby script/generate acts_as_taggable_on_steroids_migration
会生成如下migration代码:
这里建了两个表,tag表和taggings表。taggings表看着像是个多对多的连接表,另外多了个taggable_type字段,估计是要做成不同类型的taggable对象都能通用的吧。
然后……只要在需要tag的类里边加一句acts_as_taggalbe的调用就可以了……自己不用插件瞎搞了大半天的东东,两三个命令加一句代码解决了。嗯?居然没有Tag类,估计隐藏在插件内部了。grep一下:
grep 'class Tag' ./ -r
果然……
继续贴代码。
ruby script/console
还有个tag_counts方法,可以这样调用:
还可以这样:
标签云(云到底是什么概念?)可以这么玩:
首先把一个Helper的Module include到ApplicationHelper中
示例:
Controller:
View:
CSS:
缓存
为了减少查询数据库的次数,可以给taggable对象增加一个字段,用来存放所有的标签列表(以字符串形式),字段名为cached_tag_list:
最后是分隔符
默认的分隔符是半角逗号“,”,这个值也可以改,比如说改成空格:
=============================================
答案在这里:http://www.infoq.com/cn/articles/ruby-open-classes-monkeypatching
主要记录一下acts_as_taggable_on_steroids的用法。
http://agilewebdevelopment.com/plugins/acts_as_taggable_on_steroids
首先,安装这个插件到项目中:
ruby script/plugin install git://github.com/jviney/acts_as_taggable_on_steroids.git
使用
接着,执行:
ruby script/generate acts_as_taggable_on_steroids_migration
会生成如下migration代码:
class ActsAsTaggableMigration < ActiveRecord::Migration def self.up create_table :tags do |t| t.column :name, :string end create_table :taggings do |t| t.column :tag_id, :integer t.column :taggable_id, :integer # You should make sure that the column created is # long enough to store the required class names. t.column :taggable_type, :string t.column :created_at, :datetime end add_index :taggings, :tag_id add_index :taggings, [:taggable_id, :taggable_type] end def self.down drop_table :taggings drop_table :tags end end
这里建了两个表,tag表和taggings表。taggings表看着像是个多对多的连接表,另外多了个taggable_type字段,估计是要做成不同类型的taggable对象都能通用的吧。
然后……只要在需要tag的类里边加一句acts_as_taggalbe的调用就可以了……自己不用插件瞎搞了大半天的东东,两三个命令加一句代码解决了。嗯?居然没有Tag类,估计隐藏在插件内部了。grep一下:
grep 'class Tag' ./ -r
果然……
引用
./vendor/plugins/acts_as_taggable_on_steroids/lib/tag.rb:class Tag < ActiveRecord::Base
继续贴代码。
class Article < ArticleContent acts_as_taggable belongs_to :user has_many :comments end
ruby script/console
#加上acts_as_taggable的类会自动加上tag_list的accessor a=Article.new #writer只需要逗号分隔的字符串作参数 a.tag_list="tag1,tag2,tag3" #reader返回的是字符串数组。 a.tag_list #=> ["tag1","tag2","tag3"] a.save #可以用taggable类(这里即Article类)的类方法find_tagged_with来查找 #拥有某个指定tag的所有Article对象 articles=Article.find_tagged_with 'tag1' #=> [#<Article id: 2, title: nil, hits: nil, user_id: nil, created_at: "2010-01-19 17:10:05", updated_at: "2010-01-19 17:10:05", content: nil, type: "Article">] #By default, find_tagged_with will find objects that have any of the given tags. #To find only objects that are tagged with all the given tags, use match_all. articles=Article.find_tagged_with 'tag1,asdf' #=> [#<Article id: 2, title: nil, hits: nil, user_id: nil, created_at: "2010-01-19 17:10:05", updated_at: "2010-01-19 17:10:05", content: nil, type: "Article">] articles=Article.find_tagged_with 'tag1,asdf', :match_all=>true #=> [] articles=Article.find_tagged_with 'tag1,tag2', :match_all=>true #=> [#<Article id: 2, title: nil, hits: nil, user_id: nil, created_at: "2010-01-19 17:10:05", updated_at: "2010-01-19 17:10:05", content: nil, type: "Article">]
还有个tag_counts方法,可以这样调用:
Article.tag_counts
还可以这样:
user.articles.tag_counts
标签云(云到底是什么概念?)可以这么玩:
首先把一个Helper的Module include到ApplicationHelper中
module ApplicationHelper include TagsHelper end
示例:
Controller:
class PostController < ApplicationController def tag_cloud @tags = Post.tag_counts end end
View:
<% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %> <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %> <% end %>
CSS:
.css1 { font-size: 1.0em; } .css2 { font-size: 1.2em; } .css3 { font-size: 1.4em; } .css4 { font-size: 1.6em; }
缓存
为了减少查询数据库的次数,可以给taggable对象增加一个字段,用来存放所有的标签列表(以字符串形式),字段名为cached_tag_list:
class CachePostTagList < ActiveRecord::Migration def self.up add_column :posts, :cached_tag_list, :string end end
class Post < ActiveRecord::Base acts_as_taggable # cached_tag_list是默认的字段名,也可以换一个名字: # set_cached_tag_list_column_name "my_caching_column_name" end
最后是分隔符
默认的分隔符是半角逗号“,”,这个值也可以改,比如说改成空格:
TagList.delimiter = " "
评论
5 楼
同一片天空
2011-12-17
请问Css代码
.css1 { font-size: 1.0em; }
.css2 { font-size: 1.2em; }
.css3 { font-size: 1.4em; }
.css4 { font-size: 1.6em; } 放在什么地方 新手不是很懂
.css1 { font-size: 1.0em; }
.css2 { font-size: 1.2em; }
.css3 { font-size: 1.4em; }
.css4 { font-size: 1.6em; } 放在什么地方 新手不是很懂
4 楼
javafansmagic
2011-10-20
呵呵 这内容是github上的翻译。不错
3 楼
yuan
2010-02-24
2楼的问题见这篇博客的3楼:http://yuan.iteye.com/blog/575801#comments
2 楼
yuan
2010-01-20
嗯,发现一个问题:
这时候tags表有2条数据:tag1和 tag2
如果articles表有缓存的话,缓存应该是“tag1,tag2”
然后:
这时候tags表按理来说应该只剩下tag3、tag4两条数据,但结果不是这样的,tag1和tag2仍然保留着。
如果articles表有缓存,缓存应该是“tag3,tag4”,查了一下,这个倒是没有错了。
看来在更新tag_list的时候,少了一步检查,检查没有被引用的tags,删除之。
a=Article.new a.tag_list="tag1,tag2" a.save
这时候tags表有2条数据:tag1和 tag2
如果articles表有缓存的话,缓存应该是“tag1,tag2”
然后:
a.tag_list="tag3,tag4" a.save
这时候tags表按理来说应该只剩下tag3、tag4两条数据,但结果不是这样的,tag1和tag2仍然保留着。
如果articles表有缓存,缓存应该是“tag3,tag4”,查了一下,这个倒是没有错了。
看来在更新tag_list的时候,少了一步检查,检查没有被引用的tags,删除之。
1 楼
yuan
2010-01-20
搜索了一下输出SQL到控制台的方法,找到这里:
http://bxp.iteye.com/blog/149459
稍微改一下,在environment.rb中加入如下代码:
http://bxp.iteye.com/blog/149459
稍微改一下,在environment.rb中加入如下代码:
if RAILS_ENV=='development' config.log_level = :debug config.active_record.schema_format = :sql config.logger = Logger.new(STDERR) end
发表评论
-
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 14934Githubhttp://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允许你在测试运行之前往 ... -
改个bug
2010-01-20 17:38 1218问题见:http://yuan.iteye.c ... -
reset/reload
2010-01-20 16:26 1132http://caboo.se/doc/classes/Act ... -
Active Record Validations and Callbacks
2009-10-18 02:45 2373参考链接:http://guides.ru ... -
Layout in Rails
2009-10-12 17:28 4735参考链接:http://guides.rubyonrails. ... -
Rendering in Rails
2009-10-10 02:10 4519参考链接:http://guides.rubyonrails. ... -
如何为Rails的views写测试。
2009-10-01 16:53 1114原文链接:http://weblog.jamisbuck.or ... -
Rails Form helpers
2009-09-28 03:31 5167参考链接:http://guides.ru ... -
rails2.3 routes笔记
2009-09-23 04:10 2836参考链接:http://guides.ru ... -
rails中分模块开发。
2009-09-18 14:48 2307我没事就喜欢拿blog练手,blog简单嘛。 嗯,其实这是 ...
相关推荐
"acts_as_authenticated" 是一个经典的Ruby on Rails插件,它为Rails应用提供了用户认证功能。在Rails框架中,用户认证通常涉及验证用户身份、管理会话以及处理登录和登出等操作。acts_as_authenticated插件简化了这...
acts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_...
gem "acts-as-taggable-array-on" 然后执行: bundle 设置 要使用它,您需要具有一个数组列以充当taggable- tags 。 class CreateUser < ActiveRecord :: Migration def change create_table :users do | t...
"acts_as_paranoid" 是一个在Ruby on Rails框架中常用的gem,用于处理数据库记录的软删除(soft delete)。在数据库操作中,通常我们会遇到删除数据的需求,但直接删除可能会导致数据丢失,尤其是在生产环境中。...
acts_as_list, 用于管理列表的ActiveRecord插件 ActsAsList描述这个 acts_as 扩展提供了对列表中的多个对象进行排序和重新排序的功能。 具有指定的类的类需要在映射的数据库表上定义为整数的position 列。 0.8.0升级...
#ActsAsCategory acts_as_category (Version 2.0 beta)acts_as_category,是acts_as插件在acts_as_tree风格的Ruby on Rails的ActiveRecord的模式,但有一些额外的功能,以及多种便捷视图助手。例子(有关实例方法和...
在Ruby on Rails框架中,`acts_as_rateable`是一个非常实用的插件,它允许用户对模型进行评分,从而实现简单的打分功能。这个插件是Rails社区中的一个开源项目,旨在简化应用中的评分系统集成。在本篇讨论中,我们将...
ruby on rails 相关lib 其中包含:rspec flexmock acts_as_taggable-2.0.2 widgets acts_as_list classic_pagination
《深入理解BetterNestedSet:acts_as_nested_set的增强版》 在Ruby on Rails开发中,数据结构的选择对于数据库操作的效率至关重要。其中,Nested Set模型是一种常用的数据组织方式,尤其适用于管理具有层级关系的...
Api-acts_as_api.zip,使在rails中创建api响应变得简单和有趣,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程...
active_record-acts_as, 模拟activerecord模型的多表继承 插件开发已经移动这个项目的积极发展已经转移到了的krautcomputing fork 。... ActiveRecord::ActsAs这是对 acts_as_relation的重构。模拟用于Acti
使徒行传 一个Rails插件来添加软删除。...用法安装gem: gem 'acts_as_paranoid' , '~> 0.7.0' bundle install创建迁移bin/rails generate migration AddDeletedAtToParanoiac deleted_at:datetime:index启用ActsAs
《acts_as_xapian:为Ruby on Rails打造的Xapian全文搜索引擎插件》 在Web开发领域,全文搜索引擎能够极大地提升用户对信息的检索效率,对于内容丰富的应用尤其重要。Ruby on Rails作为流行的Web框架,有着众多的...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
acts_as_restful_list 就像acts_as_list 一样,但不必使用非标准方法调用(如insert_at)来弄乱您的代码,acts_as_restful_list 使管理列表变得简单。 您可以像更新其他任何内容一样更新 position 属性,其余的都...
在压缩包文件名称“ErwinM-acts_as_tenant-95529d7”中,我们可以推测这包含了Acts As Tenant库的一个特定版本,由用户ErwinM贡献,版本号可能是95529d7,这通常对应于Git仓库中的某个提交哈希值,可以用来追踪源...
gem 'acts_as_liked' 然后执行: $ bundle 运行生成器: $ rails generate acts_as_liked 并且不要忘记迁移您的数据库 $ rake db:migrate 用法 可爱的模特 将acts_as_likeable添加到任何模型,它的实例可以被...
Acts as owner 是 Ruby on Rails 的一个插件,它为所有者对象提供了自我查询可拥有对象的所有权的能力。 可拥有对象可以是属于所有者对象的任何对象和属于可拥有对象的任何对象。 属于拥有的可拥有的父代的任何可...
gem 'acts_as_aliased' 更新包后,运行 rails generate acts_as_aliased:install rake db:migrate 这将创建一个新表aliases 。 用法 假设您有一个需要别名的模型Company ,因为公司名称有不同的版本。 使用acts_as...