动态语言-ruby
文章平均质量分 51
qiujiaqun
这个作者很懒,什么都没留下…
展开
-
Ruby on rails开发从头来(四十八)- ActiveRecord基础(动态查询)
数据库上最常运行的查询莫过于根据指定条件返回符合的结果集,查询可能是返回所有名字为‘dave’的订单,或者是某个博客上所有标题含Rails的post,在很多其他的框架和程序设计语言中,你需要创建sql来执行查询,Active Record利用了ruby语言所包含的动态能力来做这些事。 例如,我们的Order Model包含了诸如name,email,address这样的属性,我们可以使用这转载 2009-08-07 11:32:00 · 727 阅读 · 0 评论 -
Ruby on rails开发从头来(四十七)- ActiveRecord基础(强大的find方法)
现在我们知道如何指定条件,现在我们来看看find方法支持的一些其他设置。 首先,理解find(:first,…)方法是非常重要的,该方法在同样的conditions设置下,和find(:all,…)方法生成同样的sql语句,不同之处仅在于只返回一条记录。在调用的时候,一种的参数为:first,另一种为:all。 find方法执行一个select from这样的sql语句,:all标转载 2009-08-07 11:20:00 · 690 阅读 · 0 评论 -
Ruby on rails开发从头来(四十六)- ActiveRecord基础(SQL和Active Record)
想象一下Active Record是如何处理SQL的,我们来看看find方法的:conditions参数,调用的时候像这样:find(:all,:conditions=>…),这里的:conditions参数决定了find方法将返回哪些记录,它相当于Sql语句的where部分,例如,要获取所有的名字为Dave,pay_type为po的订单,我们这样写: pos = Order.fi转载 2009-08-07 11:14:00 · 523 阅读 · 0 评论 -
Ruby on rails开发从头来(四十五)- ActiveRecord基础(读取记录)
读取记录包括指定那些特定的数据是你感兴趣的,你给Active Record指定标准,Active Record再返回给你一些对象,其中包含了符合条件的记录的数据。 在一个表中检索数据的最简单的办法就是指定主键,任何一个Model都支持find()方法,该方法支持一个或多个主键值,如果只指定了一个主键,将会返回对应的对象,如果指定了多个主键给find方法,该方法一组相应的对象。注转载 2009-08-07 11:10:00 · 450 阅读 · 0 评论 -
Ruby on rails开发从头来(四十四)- ActiveRecord基础(创建记录)
Active Record使得实现CRUD的数据库基本操作变得简单,在下面的几节里我们使用Mysql数据库中的orders表来进行CRUD的操作,这次先看创建(Create)。 我们假想有一个Model,名为Order:class Order end 在面向对象的模型里,表对应类,表中的行对应类的对象。我们可以通过创建一个类的对象来创建一条记录。对orders表,我们转载 2009-08-07 11:06:00 · 535 阅读 · 0 评论 -
Ruby on rails开发从头来(四十三)- ActiveRecord基础(连接数据库)
Active Record抽象了数据库连接的概念,帮助应用程序来处理底层的数据库链接的细节,作为替代,Active Record使用通用的调用,将细节委托给一组数据库适配器。 可以使用establish_connection( )方法来制定连接,下面的例子创建了一个mysql数据库连接,数据库的名字是railsdb,服务器的Host名为dbserver.com,用户名为railsuser转载 2009-08-07 11:03:00 · 596 阅读 · 0 评论 -
Ruby on rails开发从头来(四十二)- ActiveRecord基础(主键和ID)
也许你已经注意到了,在我们前面的代码中,数据库定义里都使用了一个integer型的字段id作为主键,这是Active Record的一个约定。 或许你要问,为什么不用订单编号或者某个有意义的列来作为主键呢?使用id作为主键有一个很重要的原因,就是如果使用具有内在格式的主键的话,随着时间推移,有可能其中的规则也会变化。例如,使用ISBN号码来给book表做主键,毕竟ISBN号码是转载 2009-08-07 11:00:00 · 700 阅读 · 0 评论 -
Ruby on rails开发从头来(四十一)- ActiveRecord基础(存储结构化数据)
有时,能够在某个属性中直接存储任意的ruby对象是很方便的,一种办法就是Active Record支持序列化,将一个ruby对象变为一个YMAL字符串,并且将这个字符串存储到属性对应的数据库字段中。在数据库定义中,这个字段必须为text类型。 因为Active Record将数据库中的Char型和text型映射为ruby的string型,所以如果我们需要告诉Active Rec转载 2009-08-07 10:57:00 · 528 阅读 · 0 评论 -
Ruby on rails开发从头来(四十)- ActiveRecord基础(Boolean属性)
一些数据库支持boolean类型,而另一些则不支持,这使得Active Record要抽象boolean类型变得困难。例如,如果数据库不支持boolean类型,有的开发者使用char(1)来替代,而内容使用“t”和“f”来表示true和false,而另外一些开发者使用integer类型,0是false,1是true。即使数据库支持boolean类型,在内部也许还是使用0和1来存储。转载 2009-08-07 10:56:00 · 587 阅读 · 0 评论 -
Ruby on rails开发从头来(三十九)- ActiveRecord基础(访问属性)
如果在一个model对象中有一个名为balance的属性,你可以通过索引操作符来获取该属性的值,你可以使用一个字符串或者标记,在这里我们使用标记,例如: account[:balance] #=> 获取值 account[:balance] = 0.0 #=> 设置值 但是这种常见的代码是不提倡的,更好的是这样,利用ruby的访问方法: account.bal转载 2009-08-07 10:53:00 · 613 阅读 · 0 评论 -
Ruby on rails开发从头来(三十八)- ActiveRecord基础(列和属性)
ActiveRecord中的一个对象相当于数据库中表的一行,对象的属性对应于表的列,也许你会注意到我们的Order类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,Active Record将数据库中的模式反应到类中。 我们的orders表可能使用下面的sql来创建:create table orders (id int not nu转载 2009-08-07 10:46:00 · 512 阅读 · 0 评论 -
Ruby on rails开发从头来(三十八)- ActiveRecord基础(列和属性)
ActiveRecord中的一个对象相当于数据库中表的一行,对象的属性对应于表的列,也许你会注意到我们的Order类没有提及关于orders表的任何东西,这是因为ActiveRecord在运行时来确定这些对应关系,Active Record将数据库中的模式反应到类中。 我们的orders表可能使用下面的sql来创建:create table orders (id int n转载 2009-08-07 01:53:00 · 707 阅读 · 0 评论 -
Ruby on rails开发从头来(四十九)- ActiveRecord基础(行数和再加载数据)
Active Record提供了两个方法来获取符合条件的记录的条数:count()和count_by_sql()。例如: c1 = Order.countc2 = Order.count(["name = ?", "Dave Thomas"])c3 = LineItem.count_by_sql("select count(*) " +" from line_items, orders "转载 2009-08-07 12:29:00 · 527 阅读 · 0 评论 -
Ruby on rails开发从头来(五十)- ActiveRecord基础(更新记录)
前面了解了检索的方法,这次来看看Active Record怎样更新数据库中的记录。 如果你有一个Active Record对象(或许对应于order表),你可以通过调用save方法将它写道数据库中去,如果这个对象是先前从数据库中读取出来的,save方法将会更新既有的记录,否则将会新建一条记录。 如果一条既有记录被更新,Active Record将会用它的主键和来匹配内存中转载 2009-08-07 12:34:00 · 897 阅读 · 0 评论 -
Ruby on rails开发从头来(五十一)- ActiveRecord基础(并发处理)
在学习Rails中的并发处理的处理前,我们先简单了解下并发处理的概念。 在有多个处理同时访问同一个数据库的应用程序中,可能会出现这样的情况,因为一个处理更新了数据库中的行,而使得另一个处理中持有的数据变得陈旧了。例如,A和B先后从数据库中提取了相同的数据,并都做了修改,这时B先将自己的修改更新会数据库,稍后,A将自己的修改更新回数据库,这时将会覆盖B所作的修改,当B再次提取数据库后,看到的是转载 2009-08-07 12:38:00 · 740 阅读 · 0 评论 -
一个很好的ruby教程
http://www.netbeans.org/download/flash/jruby_on_rails/jruby_on_rails.html转载 2009-08-07 20:21:00 · 1031 阅读 · 0 评论 -
范凯谈Ruby on Rails项目实践
Summary 在本次采访中,JavaEye站长范凯结合自己的实际开发经验,分享了在使用Ruby on Rails的过程中所应注意的事项,比如选择RoR的原因、用RoR开发的优势、网站的配置和部署、所遇到的困难和解决方法以及对当前动态语言发展的看法等。 Bio 范凯,JavaEye技术网站创始人,资深软件工程师,多年从事专业的软件技术咨询、培训、软件架构设计和软件开发解决方案,具有丰富的应用软件设转载 2009-08-07 16:35:00 · 1744 阅读 · 0 评论 -
建立一个典型的RubyOnRails网站(三)
第三部分,权限设计和acl插件的使用。感觉这样的权限设计也是很主流的。 下面,再看看EOL.ORG在权限设计方面是如何实现的,或者使用了什么插件。 用户角色设计和权限管理 EOL.org的权限部分采用acl_system plugin的插件,地址如下 http://brainspl.at/articles/2006/02/20/new-plugin-acl_sys转载 2009-08-07 15:11:00 · 663 阅读 · 0 评论 -
Ruby on rails开发从头来(五十五)- ActiveRecord基础(一对一关联关系)
一对一关联,或者更正确的说是一对零或一对一关联,是通过外键引用到另外一张表中的至多一条记录实现的,下图描述了orders表和invoices表的关系: 在Active Record中,要表示这样的关系需要在Order类中添加has_one:Invoice声明,并且同时在Invoice类中添加声明belongs_to:order,事实上,我们可以把这种关联关系看作是相互的,我们可以使Inv转载 2009-08-07 13:12:00 · 983 阅读 · 0 评论 -
让Ruby性能增加30%的改进方法分析
我们都知道在编译Ruby的时候你需要使用configure的 --disable-pthread参数。没错,在configure --disable-pthread 可以让你得到大约 30% 性能提高。但是,这是为什么呢? 所有的这一些我们需要使用 strace 工具,这个工具可以打出所有的真实的操作系统的调用。 下面,是一段我们测试的例程:def make_thread Thr转载 2009-08-07 15:26:00 · 583 阅读 · 0 评论 -
建立一个典型的RubyOnRails网站(四)
缓存和页面显示,这是最后一个部分了,真没想到一个连载竟然用了几个小时。累了... 外部链接和跟踪 如果想对外部网站资源进行链接和跟踪,可以使用如下的helper方法: Ruby代码 external_link_to(text,url) external_link_to(image_tag(image),url) 这两种生成链接的方法(转载 2009-08-07 15:12:00 · 645 阅读 · 0 评论 -
Ruby on rails开发从头来(五十九)- ActiveRecord基础(预加载子记录)
预加载子记录讨论的问题和“延迟加载”是相同的。通常Active Record会推迟从数据库中加载子记录,直到你需要他们,例如,通过Rdoc中的例子,我们假定博客程序有一个Model,像下面这样: class Post belongs_to :authorhas_many :comments, :order => created_on DESCend 如果我们遍历所有的po转载 2009-08-07 14:31:00 · 554 阅读 · 0 评论 -
Ruby on rails开发从头来(五十七)- ActiveRecord基础(多对多关联关系)
在Rails中多对多关联通过在关联表对应的类中声明has_and_belongs_to_many来实现。 在数据库中,多对多关联使用中间表来实现,表中包括关联表的主键,Active Record假定这个中间表的名字是由关联表的名字根据字母的顺序串联起来得到的。例如,关联表为categories和products,中间表的名字就是categories_products。 注意我转载 2009-08-07 14:26:00 · 710 阅读 · 0 评论 -
Ruby on rails开发从头来(五十六)- ActiveRecord基础(一对多关联关系)
一对多关联可以使我们表示一组对象,例如,一个order可以包含有任意多个line item,在数据库中,所有的line item记录都通过外键关联到特定的order。 在Active Record中,通过在父对象中的has_many来定义到子对象的关联,在子对象中使用belongs_to来指定父对象。我们已经在上一篇中了解了belongs_to声明,实际上,在一对多的情况下,和一对一是相同转载 2009-08-07 13:21:00 · 1180 阅读 · 0 评论 -
Ruby on rails开发从头来(五十四)- ActiveRecord基础(指定关联关系)
Rails支持三种表间关联关系,一对一,一对多,多对多,你需要在Model中加入声明来标识这些关联:has_one,has_many,belongs_to,has_and_belongs_to_many。 一对一关联关系可能存在于象订单和发票这样的关系,一个订单只能有一个发票,在Rails中,我们这样指明:class Order has_one :invoice. . .cl转载 2009-08-07 12:57:00 · 649 阅读 · 0 评论 -
Ruby on rails开发从头来(五十三)- ActiveRecord基础(表关联)
很多程序使用的数据库都包含有多个表,而且通常一些表之间还有关联关系,订单常含有多个条目,而一个条目又关联到一种商品,一个商品可能又属于多个商品分类,一个商品分类里又包含有多个不同的商品。 在数据库中,这些关联表现为使用主键值把表关联起来,也就是外键,但是这属于底层的范畴,我们需要处理Model对象间的关联,而不是数据库中的列和键。如果一个订单含有多个条目,我们需要有办法来维持,处理它们的关转载 2009-08-07 12:49:00 · 680 阅读 · 0 评论 -
Ruby on rails开发从头来(五十二)- ActiveRecord基础(删除记录)
Active Record提供了两种方式进行删除操作。首先,有两个类级别的方法,delete和delete_all,这两个操作处在数据库层面上,delete()方法接收一个或一组和数据库对应的id,delete_all()方法删除所有符合指定条件的记录,如果没有指定条件,就会删除所有的记录。方法的返回值和具体的数据库适配器相关,例如oracle返回被影响的行数。如果没有记录被删除,也不转载 2009-08-07 12:47:00 · 933 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(十九)-测试开始
前面我们已经完成了一个简单的购物车,从这篇开始我们看看在rails中怎样进行测试。 在我们创建购物车程序的时候在我们的depot目录下,就已经有一个test目录了,这就是为我们进行测试准备的。到目前为止,我们看到里面的fixtrues和functional,unit目录中已经有对controller和model对应的测试文件。 我们首先测试一下products这个model。代码te转载 2009-08-07 01:45:00 · 600 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(十八)-自动生成文档
到此,我们这个购物车的实现就完成了,下面我们可以利用ruby里的Rdoc来给我们的程序生成文档,和dotnet,java,python等一样,Rdoc可以把我们代码里类和方法声明前面的注释提取出来生成文档。 对于我们的depot程序,我们在rails的命令行里运行rake appdoc命令,如图: 完成以后,可以在depotdoc目录下看到刚才生成的文档,打开index.html,转载 2009-08-07 01:38:00 · 487 阅读 · 0 评论 -
建立一个典型的RubyOnRails网站(一)
写在前面: 第一次,写连载啊,希望能对自己和各位看官有点帮助,多了解一点RubyOnRails开发上的情况吧。能够有点帮助,这就是坚持的理由。^_^ 生命百科全书:www.eol.org 网站是基于RoR的,内容是做互动的生命百科博物馆,本文主要介绍,如果通过该网站提供的代码,建立起RoR的网站,并且学习,该网站中使用到的一些,RoR最普通的技术。 资源地址如下,转载 2009-08-07 14:34:00 · 651 阅读 · 0 评论 -
Ruby on rails开发从头来(五十八)- ActiveRecord基础(自关联)
或许存在这样的情况,在一个表中,一条记录关联到表中的另一条记录,例如,公司中的每个雇员都有上级和下级,而他们同时又是雇员,在Rails中你可以这样使用Employee类: class Employee belongs_to :manager,:class_name => "Employee",:foreign_key => "manager_id"belongs_to :mentor,:cla转载 2009-08-07 14:28:00 · 551 阅读 · 0 评论 -
ruby学习小程序整理
对字符串的学习猜词的谜题 # save this as guess.rbwords = [foobar, baz, quux]secret = words[rand(3)]print "guess? "while guess = STDIN.gets guess.chop! if guess == secret print "You win!/n" brea原创 2009-08-06 17:40:00 · 3073 阅读 · 1 评论 -
Ruby on rails开发从头来(windows)(八)-使用Session创建购物车
在前面的内容里,我们演示了怎样构建一个商品的列表,这次,我们在前面内容的基础上,构建一个简单的购物车。 1. 首先我们要来创建一个保存客户购物信息的表: 数据库脚本:drop table if exists line_items;create table line_items (id int not null auto_increment,product_id int no原创 2009-08-06 15:53:00 · 637 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(七)-创建在线购物页面
在上一篇随笔中,我们为Products创建了一个维护用的列表页面,效果如图: 这次我们使用上面维护的Products列表来创建一个最终用户使用的购物页面。 1. 创建控制器(Controller),命名为store,我们通过命令行来创建它: depot> ruby script/generate controller Store index 打开...rails转载 2009-08-06 15:35:00 · 507 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(五)-对输入进行验证
在上一篇随笔中,我们完成了对一个表Product的添删查改的操作,你一定注意到了,我们还没有添加任何验证,例如Price,我们可以随意输入任何字符,而不会有错误提示。这次,我们就来看看怎样添加验证输入功能。 1. 打开depotappmodels目录下的product.rb文件,向其中添加代码,如下:class Product validates_presence_of :转载 2009-08-06 12:36:00 · 585 阅读 · 0 评论 -
wrong number of arguments (1 for 2)
Ruby要求:数据表的名字和model的名字必须关联: 1. 表名小写,model名的第一个字母大写; 2. 表名用复数形式(如products),model用单数形式(如Product). 在Rails2.0中,scaffold从核心中移出,转变成插件,使用时,我们需要在所在项目里用下面的命令下载: ruby script/plugin install scaffolding 配置好数据库: d转载 2009-08-06 12:14:00 · 5796 阅读 · 0 评论 -
几个有趣的web 2.0网站
1. http://www.roxer.comRoxer 是一家新的互联网服务,它允许用户在线很轻松的DIY出自己的个性化网站服务。它采用AJAX技术,从锁定到编辑模式下,同时配合浮动的工具栏,用户只需要通过鼠标的简单拖拽即可轻松的将各种富媒体文件模块放置在自己的Poxer 版面上并进行详尽的参数设置。它完全是可视化的操作,用户无需了解任何HTML, CSS, Javascript转载 2009-08-06 11:33:00 · 706 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(二)-创建项目和第一个Hello world
在前面的“使用InstantRaisl快速搭建Ruby on rails环境”后,这一次说说如何创建自己的项目,并写一个最简单的Hello页面,例子是借用Agile Web Development with Rails中的。 按照下面的步骤: 1. 使用菜单,如下图: 2. 点击“Create New Rails App…”按钮,如下图 3. 在弹出的命转载 2009-08-06 11:14:00 · 767 阅读 · 0 评论 -
rails 入门笔记(一)----- database.yml配置mysql
development: adapter: mysql database: login host: localhost username: root password: 1234 test: adapter: mysql database: login_test host: localhost username: root password: 1234 pr转载 2009-08-06 12:02:00 · 4511 阅读 · 0 评论 -
Ruby on rails开发从头来(windows)(四)-第一个添删查改例子
在上一篇Ruby on rails开发从头来(windows)(三)-实现页面间的跳转中,我们创建了两个页面来进行跳转迁移,这次我们来写一个单表维护的添删查改的例子。 1. 这次我们重新创建一个项目depot,按照上篇中的步骤,创建depot项目。 2. 创建数据库。 你可以使用rails的命令行,通过mysql创建,先定位到depot目录,使用命令:depot>转载 2009-08-06 11:37:00 · 816 阅读 · 0 评论