`
wuxu1314
  • 浏览: 2406 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ActiveRecord 使用问题

阅读更多

最近刚学习ruby on rails,配置各种工具都很顺利,我的RoR开发环境:ruby 1.8.6 + rails 1.2.3 + mysql 5.0.18(winxp中文版下), 数据库管理工具Navicat Mysql,之前在网上看到一些关于中文的配置问题,我的mysql的default-character-set=gbk, 但使用Navicat来连接数据库时需配置(高级->把使用MySql字符集项去掉,同时设置编码为65001(UTF-8)),然后创建数据库时字符集选择UTF-8时,这样就一切OK,数据库、页面显示中文都正常了!

  昨天我按照Ruby on Rails 快速Web应用开发实战(柳靖等编)中的第四章例子                                                                         

requrie "rubygems"
requrie_gem  "activerecord"
require        "pp"
ActiveRecord::Base.establish_connection(
 :adapter => "mysql",
 :host => "localhost",
 :database => "book",
 :username => "root",
 :password => "11241225",
 :port => "3306"
)
class TestAttribute < ActiveRecord::Base
 serialize :all_attributes
end
pp TestAttribute.columns.map { |col| col.name }
test_attribute = TestAttribute.new
test_attribute.float_num1 = 1.091239123
pp test_attribute.float_num1.class
test_attribute.float_num2 = 2.546461235
pp test_attribute.float_num2.class
test_attribute.all_attributes = TestAttribute.columns.map { |col| col.name }
pp test_attribute.all_attributes
pp test_attribute.all_attributes.class
pp test_attribute[:float_num1]
pp test_attribute.float_num2
pp test_attribute.float_num2?

注:我的MySql的root用户密码为11241225,我在book数据库中创建了test_attributes表如下:

create table test_attributes (
 id   int not null auto_increment,
 float_num1  float,
 float_num2  float,
 all_attributes text,
 primary key (id)
);

运行时提示如下:D:0:Warning: require_gem is obsolete.  Use gem instead.
c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:301:in `report_activate_error': Could not find RubyGem ac
tive_record (>= 0.0.0) (Gem::LoadError)
        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:238:in `activate'
        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:76:in `active_gem_with_options'
        from c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:61:in `require_gem'
        from D:/workspace/Ruby/category.rb:2

之后我就把require_gem "activerecord"改成 gem "activerecord"运行提示如下: uninitialized constant ActiveRecord (NameError),我就以这条提示在百度上搜索,进入http://www.iteye.com/post/245813 ,按照robbin所说把gem "activerecord"改成require 'active_record'再次运行结果如下:c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapters/mysql_adapt
er.rb:389:in `real_connect': can't convert String into Integer (TypeError)
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/mysql_adapter.rb:389:in `connect'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/mysql_adapter.rb:152:in `initialize'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/mysql_adapter.rb:82:in `new'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/mysql_adapter.rb:82:in `mysql_connection'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/abstract/connection_specification.rb:262:in `send'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/abstract/connection_specification.rb:262:in `connection_without_query_cache='
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/query_cache.rb:54:
in `connection='
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/abstract/connection_specification.rb:230:in `retrieve_connection'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/connection_adapter
s/abstract/connection_specification.rb:78:in `connection'
        from c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/base.rb:763:in `co
lumns'
        from D:/Thunder/02913/RoR选题方向—源代码/第4章/test.rb:16

想了很久还是没解决,我想很多刚入门的朋友也和我一样,会遇到各种“弱智”的入门级问题,也许对其它的人来说这根本不是个问题,但却让我抓狂,这种学习的积极性打击相当的大,于是我抱着试试看的心态走下了我的第一次求助,回报的方式就是尽我所能帮助其他人!

昨天看了一个源码(C:\ruby\lib\ruby\gems\1.8\gems\activerecord-1.15.3\lib\active_record\connection_adapters\abstract\connection_specification.rb中establish_connection的定义
ActiveRecord::Base.establish_connection(
         :adapter  => "mysql",
         :host     => "localhost",
         :username => "myuser",
         :password => "mypass",
         :database => "somedatabase"
       )

原来我之前多加了:port选项,我照着这个定义重新编码就成功了,经过这事之后,我学会了自己去查看源码,自己尝试着去解决一些问题!

分享到:
评论
1 楼 weskycn 2009-12-23  
哥,服你  

相关推荐

    ActiveRecord使用文档

    ActiveRecord的model创建,常用的一些增删改查以及HQL的使用

    ActiveRecord简单实例_activerecord.zip

    在Ruby on Rails框架中,ActiveRecord是一个至...在实际开发中,熟练掌握ActiveRecord的使用,可以极大地提高开发效率和代码质量。通过实例练习,你可以更深入地理解其工作原理,更好地利用它来构建复杂的Web应用程序。

    Castle ActiveRecord快速入门指南、ActiveRecord帮助文档

    - ActiveRecord 提供了内置的事务管理,可以在方法中使用 `using (var tx = Session.Current.BeginTransaction())` 来开启事务,事务中的所有操作将在最后一起提交或回滚。 6. **事件和生命周期** - 支持 Before...

    Castle.ActiveRecord 升级NHibernate到3.4.0GA

    Castle.ActiveRecord官方已经停止更新了,官方最高支持到NHibernate 3.1.0.4000,这个版本还有不少问题(例如:[NH-2213] - CLONE -Wrong parameters order in IQuery with SetParameterList and Filter)。...

    Castle.ActiveRecord (.NET FrameWork 2.0)

    如果你想使用Castle.ActiveRecord,但又不想使用.NET Framework 3.0/3.5/4.0或更高版本,那么这个就是你所需要的,For .NET FrameWork 2.0,我整理了好久,自己从官方一个资源库找到并整理好的一套。 -------------...

    Pro ActiveRecord Databases with Ruby and Rails.pdf

    ### ActiveRecord在Ruby与Rails中的高级应用 #### 一、引言 《Pro ActiveRecord Databases with ...通过阅读本书,读者不仅可以掌握ActiveRecord的强大功能,还能学会如何有效地解决实际开发过程中遇到的各种问题。

    NHibernate中文教程+activerecord

    在实际应用中,需要注意避免N+1查询问题,合理设计对象关系,以及正确使用缓存策略。另外,理解何时使用Session和Transaction是至关重要的,以确保数据的一致性和完整性。 10. **调试与性能优化** 调试NHibernate...

    简单Castle.ActiveRecord.Generator

    Castle.ActiveRecord.Generator 是一个基于 Castle ActiveRecord 框架的代码生成工具,它极大地简化了在.NET环境中使用ActiveRecord模式进行数据库操作的工作流程。ActiveRecord是面向对象持久化的一个设计模式,将...

    ActiveRecord 升级NHibernate到3.3.0GA

    将ActiveRecord中的NHibernate升级到3.3.0GA,排除编译的bug问题,保留ActiveRecord的完整功能,【Castle.ActiveRecord 升级NHibernate到3.4.0GA】的功能不完整!

    C# Castle.ActiveRecord CS源码示例教程.zip

    这个教程主要围绕如何使用 Castle.ActiveRecord 在 C# 项目中实现 ActiveRecord 设计模式,以及通过 Winform 应用来展示其实现过程。 ActiveRecord 是一种设计模式,源自 Ruby on Rails,它将业务对象与数据库记录...

    [IronRuby] C# 4.0调用ActiveRecord

    从提供的文件信息中,我们可以得知这篇博文主要讨论的是如何使用C# 4.0调用IronRuby中的ActiveRecord功能。不过由于博文链接和部分详细内容无法提供,知识点将基于文件信息部分和公共知识构建。 知识点一:IronRuby...

    scala-activerecord-specs_2.9.2-0.2.3.zip

    "开源项目"标签表明Scala Activerecord是一个开放源代码的项目,这意味着它的源代码可以被公众查看、使用、修改并分发,遵循一定的开源许可证。这通常促进了社区参与、协作开发和代码共享。 **压缩包子文件名称:**...

    MyBatisPlus的ActiveRecord实现CRUD示例代码

    在本示例中,我们将深入探讨MyBatisPlus如何通过ActiveRecord模式实现CRUD(创建、读取、更新、删除)操作。ActiveRecord是一种设计模式,它将数据库表中的每一条记录映射为一个对象,通过这个对象可以直接进行CRUD...

    castle ActiveRecord 源代码

    1. **元数据映射**:Castle ActiveRecord使用XML或者Fluent API来定义对象与数据库表之间的映射关系,这包括字段、属性、主键、外键等信息。通过元数据,Castle ActiveRecord能自动建立对象与数据库之间的桥梁。 2....

    C# Castle.ActiveRecord Winform 源码示例教程

    Castle.ActiveRecord 的资料很多,但是WINFORM...这个例子使用的是ACCESS数据库,从单表,一对多,多对多,数据绑定,HQL查询等多方面解译了Castle.ActiveRecord的基本用法,并付上了Castle.ActiveRecord的API及教程。

    Java敏捷持久层-ROR-ActiveRecord持久层框架的Java实现

    在Java世界里,虽然Hibernate和JPA等框架已经非常成熟,但Ruby on Rails(ROR)中的ActiveRecord模式也受到了不少Java开发者的青睐,并有了一些移植到Java平台的实现。 ActiveRecord是一种对象关系映射(ORM)模式...

    userstamp, 这个 Rails 插件扩展ActiveRecord.zip

    userstamp, 这个 Rails 插件扩展ActiveRecord Userstamp插件( v-2.0 )概述Userstamp插件扩展了 ActiveRecord::Base,以添加对'创建者','更新程序'和'deleter'属性的自动更新。 它是基于 ActiveRecord::Timesta

    使用公钥加密保护ActiveRecord属性.zip

    "使用公钥加密保护ActiveRecord属性"的主题就是关于如何实现这一目标的实践教程。 首先,我们要理解公钥加密的概念。公钥加密,也称为非对称加密,涉及到两个密钥:公钥和私钥。公钥可以公开分享,用于加密数据;而...

    Castle ActiveRecord学习实践

    为了帮助读者更好地理解 Castle ActiveRecord 的使用方法,文档中还包含了针对 .NET 2.0 的快速入门示例,涵盖了从环境搭建到第一个 CRUD 应用程序的全过程。 以上总结了 Castle ActiveRecord 学习实践中涉及的主要...

    Ruby-OccamsRecord缺少ActiveRecord的高效查询API

    在ActiveRecord中,查询通常依赖于链式方法调用,例如`where`、`order`、`limit`等,这些方法虽然易于理解,但在大数据集上可能会导致性能问题。这是因为每个方法调用都会生成一个新的SQL查询片段,这在内存和计算...

Global site tag (gtag.js) - Google Analytics