`
hideto
  • 浏览: 2678304 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

每天一剂Rails良药之Make Dumb Data Smart with composed_of

    博客分类:
  • Ruby
阅读更多
ActiveRecord有一个composed_of()方法用来声明组件关系,如:
class Person < ActiveRecord::Base
  composed_of :address,
              :class_name => "Address",
              :mapping => [%w(address_street street),
                           %w(address_city city),
                           %w(address_state state),
                           %w(address_country country)]

class Address
  attr_accessor :street, :city, :state, :country
  def initialize(street, city, state, country)
    @street = street
    @city = city
    @state = state
    @country = country
  end
end

这样我们就声明Person composed_of Address的关系,这将映射people表的address_street,address_city,address_state和address_country域到Address类,允许你将address作为first-class对象来操作,但是Address类没有继承ActiveRecord::Base,它只是用来结构化数据和面向对象操作。
需要注意的是
person.address.city = "LA"
person.save

这不会更新person的city字段,因为composed_of()的值对象被认为是immutable的,而只有new一个Address对象才能保存
person.address = Address.new(...)
person.save
分享到:
评论

相关推荐

    agile_web_development_with_rails_3rd_edition.9994652073.pdf

    《敏捷Web开发与Rails》第三版是一本深入探讨Ruby on Rails框架在敏捷软件开发方法论下的应用指南。本书由多位知名作者共同编写,包括Sam Ruby、Dave Thomas、David Heinemeier Hansson等,他们都是在Ruby社区内享有...

    curso_tour_of_heroes_api:Ruby on Rails作为API课程-源码

    英雄之旅API Ruby on Rails 6课程作为创建Heroes CRUD的API。 该存储库是YouTube 的。 Ruby版本2.7.2 Rails版本6.1.x 数据库SQLite3(dev)/ PostgreSQL(产品)运行项目的初始设置# clone the projectgit clone ...

    Rails_Recipes_with_Source_Code

    《Rails Recipes with Source Code》是一本专注于Ruby on Rails框架实践技巧和源代码解析的书籍。Rails是基于Ruby语言的Web开发框架,以其“约定优于配置”(Convention over Configuration)的理念和“开发人员的...

    Agile Web Development with Rails 4

    You concentrate on creating the application, and Rails takes care of the details., Tens of thousands of developers have used this award-winning book to learn Rails. It’s a broad, far-reaching ...

    Ruby-on-Rails-rails.zip

    Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...

    Agile+Web+Development+with+Rails中文版.pdf

    《Agile Web Development with Rails》是一本经典的Rails开发指南,中文版的出版使得更多的中国开发者能够深入理解并应用敏捷开发方法与Ruby on Rails框架。这本书是Rails开发者的必备参考资料,它详细介绍了如何...

    spree_smart_free_shipping

    bundle exec rails g spree_smart_free_shipping:install 测试 首先捆绑您的依赖项,然后运行rake 。 如果不存在, rake将默认构建虚拟应用程序,然后它将运行规范。 可以使用rake test_app重新生成虚拟应用程序。 ...

    weixin_rails_middleware, 微信集成 ruby weixin_rails_middleware for integration weixin..zip

    `weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...

    RestFul_Rails_Dev_pdf_v_0.1.zip

    本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...

    Rails101_by_rails4.0

    《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...

    rails_and_ionic_make_love_part_two_authentication_with_devise

    欢迎阅读Dovetail Digital撰写的Rails和Ionic Make Love的第二部分。 您可以在此处查看原始博客文章: : 感觉像聊天吗? 我们正在@dovetaildigital努力奋斗,并希望收到您的来信。

    Agile Web Development with Rails

    《Agile Web Development with Rails》(敏捷Web开发:Ruby on Rails)这本书,作为Rails开发新手的教材,强调了敏捷开发方法,并以其帮助开发者建立起一个实用的Web应用。从给出的文件信息来看,这本书正在编写过程...

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板.zip

    rails_apps_composer, 一个 gem,为 Rails 启动应用程序创建 Rails 应用程序模板 Rails 应用编辑器 Rails 应用程序编辑器 gem 安装一个 命令行 工具来从"食谱"的Collection 组装 Rails 应用程序。"你可以使用 rails_...

    Ruby on Rails_ Up and Running

    RUBY的经典之作,对其在RAILS下开发写得很详细

Global site tag (gtag.js) - Google Analytics