Active Record 有个serialized属性,简单说说关于这个属性的一些东西
1. 干什么用的
实现在文本字段存储序列化的值.即,序列,哈希表,数组等.
2. serialized怎么用
以下是官方API中的例子
class User < ActiveRecord::Base
serialize :preferences # users表中有preferences字段,类型是文本的
end
user = User.create(:preferences => { "background" => "black", "display" => large })
User.find(user.id).preferences # => { "background" => "black", "display" => large }
class User < ActiveRecord::Base
serialize :preferences, Hash#指定了序列化类型
end
user = User.create(:preferences => %w( one two three ))#赋值是array类型
User.find(user.id).preferences # 提示序列化类型不匹配错误raises SerializationTypeMismatch
3. 帮助理解的例子
数据库有个settings表,该表有id和文本的menu属性
#model描述
class Setting < ActiveRecord::Base
serialize :menu
end
# 创建记录
s = Setting.new
=> #<Setting id: nil, menu: nil>
# 分配序列menu值,例子2个,可以更多
s.menu = [ 'subscription', 'membership' ]
=> ["subscription", "membership"]
# 读取该值,以便验证
s.menu
=> ["subscription", "membership"]
# 保存记录
s.save
=> true
数据库存储数据如下:
id: 1
menu: --- \n- subscription\n- membership
#So it was serialized to YAML correctly.查看数据库,可以知道成功序列化成YAML格式
重新读取
s2 = Setting.find(1)
=> #<Setting id: 1, menu: ["subscription", "membership"]>
# Read the menu attribute and So it was deserialized too
# 表明反序列化成功
s2.menu
=> ["subscription", "membership"]
4. 在什么情况下使用
这个API看不出来,我们可以假设一个情景. 当前,SNS网络比较流行,对于当前用户User的Blog可能有很多用户访问, 那么,用户之间可能是好友关系.这就需要判断,而这个判断经常会用到, 那么,或者我们需要查询一个类似friendship-status表,或者,需要一个很长的针对user id的查询.
显然,面对这样的情景,都会需要比较长的时间.那么,serialized在这种情况下,比较好用.就是把用户id序列化到文本属性就可以了.
5. Rails 2.1以后为什么不能保存
#会执行失败
def add_to_friend_ids_cache(friend_id)
self.friend_ids_cache << friend_id unless self.friend_ids_cache.include?(friend_id)
self.save
end
def add_to_friend_ids_cache(friend_id)
self.friend_ids_cache_will_change!#_will_change! method for handling dirty objects
self.friend_ids_cache << friend_id unless self.friend_ids_cache.include?(friend_id)
self.save
end
分享到:
- 2009-04-23 00:58
- 浏览 2771
- 评论(0)
- 论坛回复 / 浏览 (0 / 2236)
- 查看更多
相关推荐
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
在这个项目中,`User`和`Image`模型可能会与数据库中的相应表关联,通过定义属性和关系,如`has_many :images`表示一个用户可以拥有多个图片。 5. **路由配置**: Rails的路由系统将URL映射到控制器的行动上,如`/...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
压缩包子文件的文件名称 "Ruby on Rails.pptx" 提示可能是一个关于Rails的PowerPoint演示文稿,其中可能涵盖了Rails的基础概念、安装步骤、主要组件介绍、开发流程、最佳实践,以及可能的示例代码和案例研究。...
例如,要在Rails应用中创建一个新的资源,如博客文章,你需要在models目录下创建一个名为`post.rb`的文件,定义Post类,并设置属性如标题和内容。在controllers目录下创建`posts_controller.rb`,定义控制器方法,如...
在Rails中,我们通常使用ActiveRecord库来创建模型,通过继承`ApplicationRecord`类并定义属性和关系。 2. **View**:视图负责展示用户界面。Rails提供了ERB(Embedded Ruby)模板,允许在HTML中嵌入Ruby代码,实现...
从给定的文件信息来看,我们正在探讨的是一本关于Ruby on Rails的书籍,书名为《Simply Rails2》,作者是Patrick Lenz。本书旨在为初学者提供深入理解Ruby on Rails框架的指南,从基础概念到高级主题均有涵盖,是...
描述中的 "ruby and rails 的框架rails-2.3.3.zip" 提到的是 Rails 的另一个版本 2.3.3,尽管与标题中的版本号不完全匹配,但我们可以推断这是关于 Rails 2.3.x 系列的讨论。这个压缩包很可能包含了 Rails 框架的源...
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
Advanced Rails,英文版,一本关于Rails的好书!
[Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-Book) ☆ 图书概要:☆ Rails 3 is a huge step forward. You can now easily extend the framework, ...
例如,`rails generate model Book title:string author:string`将创建一个`Book`模型,包含`title`和`author`属性。 6. **数据库迁移(Migrations)** Rails使用迁移来管理数据库结构的变化。`rails generate ...
标题 "Rails相关电子书汇总" 暗示了这个压缩包包含了关于Ruby on Rails框架的电子书籍资源。Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以...
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...
在Rails 2.1中,脏数据追踪被进一步增强,使得开发者可以更方便地检查哪些属性发生了更改,这对于实现复杂的数据验证逻辑非常有帮助。 **Gem依赖管理(Gem Dependencies)** Rails 2.1引入了一种新的方式来管理...
随着互联网的快速发展,Ruby on Rails作为一种流行的Web开发框架,在开发领域得到了广泛的应用。它的简易性与高效性让许多开发者为之青睐。而想要在本地环境搭建Ruby on Rails的开发环境,掌握正确的安装步骤是基础...
Rails是Ruby语言的一个著名Web开发框架,全称为Ruby on Rails,它遵循MVC(Model-View-Controller)架构模式,旨在提高开发效率和代码可读性。本示例"rails项目起步示例"是一个购物系统,非常适合初学者入门学习。 ...