activerecord

2024/4/15 3:20:22

每天一剂Rails良药之Keeping Track of Who Did What

今天我们看看怎样在数据库记录用户操作 db/migrate/002_add_audit_trails_table.rb [code] class AddAuditTrailsTable < ActiveRecord::Migrationdef self.upcreate_table :audit_trails do |t|t.column :record_id, :integert.column :record_type, :stringt.column :even…

Rails宝典之第四式: 将查询移位Model

沿着[urlhttp://hideto.iteye.com/blog/105774]Rails宝典之第三式: 通过关联做查询[/url]的脚步&#xff0c;我们可以进一步简化代码:[code] class Task < ActiveRecord::Basebelongs_to :projectdef self.find_incompletefind_all_by_complete(false, : order > created…

每天一剂Rails良药之Extracting Test Fixtures From Live Data

Rails做单元测试时&#xff0c;我们自己手动去创建所有的fixtures会是个噩梦&#xff0c;有没有什么好的方案呢? 我们可以利用数据库里已有的数据&#xff0c;写一个rake tast来把数据库的数据复制出来到YAML文件里: CreateFixturesFromLiveData/lib/tasks/extract_fixtures.r…

每天一剂Rails良药之Live Preview

像蛙眼等有时候需要给用户提供预览查看&#xff0c;今天我们就来看看利用Rails和Prototype快捷的提供Live Preview功能。1&#xff0c;在layout里加入prototype.js 如app/views/layouts/standard.rhtml: [code] <html><head><% javascript_include_tag "pr…

Rails 开发与 Java 编程的比较

Ruby on Rails 开发和 Java™ 开发有着本质的不同。在 跨越边界 系列的最后一期中&#xff0c;Bruce Tate 将概述使用 Rails 从头开发一个复杂、可伸缩的 Web 站点时所发现的二者的主要差异。 Rails 开发人员常常把 Java 开发人员看作是沉闷而劳碌的老古董。而 Java 崇拜者则常…

method_missing了解10件事

我可不是标题党&#xff0c;题目是原作者起的 [urlhttp://www.thirdbit.net/articles/2007/08/01/10-things-you-should-know-about-method_missing/]10 things you should know about method_missing[/url]1&#xff0c;method_missing是一个Ruby内核方法2&#xff0c;Rails使…

每天一剂Rails良药之Live Search

这次我们看看Rails里text_field的auto_complete&#xff0c;即Live Search。1&#xff0c;添加Recipe的Migration [code] class AddRecipes < ActiveRecord::Migrationdef self.upcreate_table :recipes do |t|t.column :name, :stringendenddef self.downdrop_table :recip…

Rails、MySQL的utf8中文乱码问题

又回到这个老问题&#xff0c;表单输入中文时数据库数据为乱码 解决方案: MySQL字符集采用utf8&#xff0c;创建数据库时也使用utf8&#xff0c;然后在application.rb里加上: [code] # application.rbbefore_filter :set_charsetbefore_filter :configure_charsetsdef set_char…

CakePHP初探

深受ROR影响&#xff0c;PHP近两年也出了个[urlhttp://www.cakephp.org/]CakePHP[/url]框架: Cake is a rapid development framework for PHP which uses commonly known design patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC.[b]安装Apa…

Rails宝典七十六式:使用scope_out插件

[b]安装[/b] [code] ruby script/plugin install http://scope-out-rails.googlecode.com/svn/trunk/ [/code][b]使用例子[/b] [code] # models/task.rb scope_out :incomplete, :conditions > [complete?, false], :order > name# tasks_controller.rb tasks Task.fin…

Rails宝典之第二十五式: Sql injection

Sql injection是老问题&#xff0c;对如下查询: [code] def indextasks Task.find(:all, :conditions > "name LIKE %#{params[:query]}%") end [/code] 当用户输入的query条件加上单引号时很容易通过sql injection来攻击我们的Rails程序 而我们使用如下查询方式…

Rails宝典之七十五式:复杂表单Part3

前两次学习了动态添加和删除project的多个tasks&#xff0c;这次来看看如何编辑project其他页面不变&#xff0c;但是_task.rhtml改了&#xff1a; [code] <!-- projects/edit.rhtml --> <% form_for :project, :url > project_path(project), :html > { :metho…

每天一剂Rails良药之Validating Non-ActiveRecord Objects

对于非ActiveRecord对象的Validation&#xff0c;我们不能简单的include ActiveRecord::Validations 我们需要写一个module&#xff0c;如ValidatingNonARObjects/lib/validateable.rb [code] module Validateable[:save, :save!, :update_attribute].each{|attr| define_metho…

Rails源码研究之ActionController:七,filters

我们上次看过了ActiveRecord的callbacks&#xff0c;这次看看ActionController的filters [b]1&#xff0c;filter继承[/b] 先执行父类中的filter&#xff0c;再执行子类中的filter&#xff0c;如果父类中的filter返回false&#xff0c;则不执行子类中后续的filter[b]2&#xff…

Rails宝典之第五十四式: ruby-debug

介绍下使用[urlhttp://rubyforge.org/projects/ruby-debug/]ruby-debug[/url]来调试Rails程序安装ruby-debug: [code] sudo gem install ruby-debug -y [/code]修改environment.rb: [code] require ruby-debug [/code]我们在需要调试的代码里使用ruby-debug: [code] class Task…

每天一剂Rails良药之Convert Your Sessions To ActiveRecord

我们看看config/environment.rb文件&#xff0c;其中有以下一段: [code]# Use the database for sessions instead of the file system# (create the session table with rake db:sessions:create)# config.action_controller.session_store :active_record_store [/code] Rai…

Rails宝典之第五式: 使用with_scope

这次来介绍with_scope方法的使用。继续前面的例子&#xff0c;我们希望只取得complete为false的前20条数据&#xff0c;我们可以给find_incomplete方法添加一个Hash参数&#xff0c;然后使用with_scope将 额外的参数附加到我们的查询方法里: [code] class Task < ActiveReco…

全局变量往哪儿放?

Rails有乐观锁悲观锁&#xff0c;但是悲观锁它不支持整个table的锁啊 好吧&#xff0c;那就SQL吧&#xff1a;ActiveRecord::Base.connection.execute("LOCK TABLE XXX WRITE")ActiveRecord::Base.connection.execute("UNLOCK TABLES") 在Console下试了试&…

每天一剂Rails良药之Adding Support for Localization

今天来看看Rails对于不同locale的支持&#xff0c;我们使用Globalize插件 [code] ruby script/plugin install \http://svn.globalize-rails.org/svn/globalize/globalize/trunk [/code] 然后我们生成migration文件 [code] ruby script/generate globalize [/code] 然后运行 [c…

每天一剂Rails良药之acts_as_ferret

[urlhttp://ferret.davebalmain.com/trac/]Ferret[/url]是Ruby的文本搜索引擎&#xff0c;它基于[urlhttp://lucene.apache.org/]Apache Lucene[/url]安装Ferret非常简单: [code] gem install ferret [/code]Ferret是一堆C代码的Ruby代码封装&#xff0c;Ferret是针对Ruby的而不…

每天一剂Rails良药之tztime

以前我们这样使用TimeZone: [code] class TasksController < ApplicationControllerdef createtask account.tasks.build(params[:task])task.alert_at current_user.time_zone.local_to_utc(task.alert_at)task.save!end end [/code] 每次我们需要使用时区转换时我们都要…

Rails宝典之第五十三式: Handling exceptions

当我们访问错误的url时&#xff0c;development模式下会显示错误栈页面 但如果我们想测试production模式下的出错页面&#xff0c;我们应该怎样做呢?可以发现&#xff0c;development.rb和production.rb里分别设置了config.action_controller.consider_all_requests_local为 t…

每天一条Ruby小道之Symbol

在Ruby中symbol是Symbol类的实例。symbol的语法为一个冒号后面接一个标识符。symbol就像一个字符串&#xff0c;它表示了一个字符序列。它不像字符串&#xff0c;每个symbol只有一个实例(和Fixnum一样)。因此&#xff0c;有一个内存或 性能问题需要弄清楚。例如&#xff0c;在下…

Rails宝典之第二十六式: 防止Hacker入侵

假设我们的users表如下: [code] create_table "users", :force > true do |t|t.column "name", :stringt.column "admin", :boolean, :default > false, :null > false end [/code] 看看我们都创建用户的action: [code] def createuser…

Castle在“新.NET时代”将何去何从

国内的。NET开发人员相信对于Castle都不会陌生。Castle是针对。NET平台下的一个非常优秀的开源项目&#xff0c;从数据访问框架 ORM到依赖注入容器&#xff0c;再到WEB层的MVC框架、AOP&#xff0c;基本包括了整个开发过程中的所有东西&#xff0c;为我们快速的构建企业级的应…

[IronRuby] C# 4.0调用ActiveRecord

DLR引擎是一个通用的平台和承载模型&#xff0c;使动态语言可在 Microsoft .NET Framework 公共语言运行时 (CLR) 上运行。有数个DLR 脚本程序集提供运行时脚本环境&#xff0c;从而在动态语言与静态语言之间建立起桥梁&#xff1a; [list] [*]Microsoft.Dynamic.Dll [*]Micros…

RAILS自定义快速安装脚本

为了一劳永逸的快速安装RAILS,或者其他常见的ruby包,写了一个小dos脚本. 你可以自己指定别的服务器在菜单里.修改pack变量也可以用来安装别的包. 不过主要还是对rails来用吧. [code] ECHO OFF :BEGIN CLS ECHO. ECHO SELECT SORUCE OF RUBY GEMS ECHO. ECHO. ECHO 1RUBY FORG…

Rails宝典之第五十七式: Select or Create

看一个选择Category或从text_field创建新Category的例子: [code] <!-- views/products/_form.rhtml --> <p><label for"product_category_id">Category:</lable><br/><% f.collection_select :category_id, Category.find(:all), :…

Rails宝典之第二十三式: counter cache

请看[urlhttp://hideto.iteye.com/blog/70236]Rails里的Magic Column Names[/url]这次就是讲用_count字段来缓存has_many的计数看Project和Task的例子: [code] <h1>Projects</h1><table> <% for project in projects %><tr><td><% link…

每天一剂Rails良药之continuous_builder和deadlock_retry

continuous_builder是一个Rails与Subversion集成的持续集成工具&#xff0c;参考[url]http://hideto.iteye.com/blog/80873[/url] deadlock_retry允许数据库驱动重试死锁的事务&#xff0c;它已经自动集成到ActiveRecord&#xff0c;我们不用更改任何代码就拥有该插件的重试事务…

每天一剂Rails良药之exception_notification

[urlhttp://hideto.iteye.com/blog/81144]每天一剂Rails良药之Getting Notified of Unhandled Exceptions[/url]中也提到了Exception Notification插件 该插件在production环境下&#xff0c;当程序出错时会给recipient发送notification邮件Exception notification只会在访问的…

每天一剂Rails良药之Processing Uploaded Images

今天来看看Rails怎样做Image的thumbnail 我们需要[urlhttp://rmagick.rubyforge.org]RMagick[/url]&#xff0c;它是ImageMagick/GraphicsMagick的Ruby API 我们先安装好ImageMagic/GraphicsMagick&#xff0c;然后安装RMagick: [code] sudo gem install rmagick [/code] 上传表…

实战Hilog笔记三:@current_user/logged_in?/require_login/editable?

1,在ApplicationController里添加几个辅助方法: [code] class ApplicationController < ActionController::Basesession :session_key > _hilog_session_idbefore_filter :load_defaultshelper_method :logged_in? protecteddef load_defaultscurrent_user if logged_in…

Rails宝典之第二十二式: eager loading

看这个页面代码: [code] <% for task in tasks %><% link_to task.name, task_path(task) %> in <% task.project.name %> <% end %> [/code] 上面的代码对每个task对象&#xff0c;取得project的name属性并显示&#xff0c;看看log: [code] Project L…

每天一剂Rails良药之token_generator

这个插件让我们给使用它的当前class添加一个使用MD5生成的token [code] class Invitation < ActiveRecord::Baseinclude TokenGeneratorbefore_create :set_token endclass ImperialInvitation < ActiveRecord::Baseinclude TokenGeneratorbefore_create :set_tokenpriva…

Hyper Estraier与acts_as_searchable实践

acts_as_searchable是一个Rails插件&#xff0c;它依赖于Hyper Estraier这个独立的搜索引擎所提供的索引和搜索服务1&#xff0c;安装Hyper Estraier 去[url]http://hyperestraier.sourceforge.net/win/[/url]下载Binary Packages for Windows&#xff0c;将hyperestraier-1.4.…