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

Rails宝典之第四十七式: 两种多对多

    博客分类:
  • Ruby
阅读更多
Rails里实现多对多有两种方式:
1,has_and_belongs_to_many
# in migration
def self.up
  create_table 'categories_products', :id => false do |t|
    t.column :category_id, :integer
    t.column :product_id, :integer
  end
end

# models/product.rb
has_and_belongs_to_many :categories

# models/category.rb
has_and_belongs_to_many :products

这是最直接的多对多,用中间表categories_products来连接category和product,并且中间表里没有其他字段信息

2,has_many :through
# models/categorization.rb
belongs_to :product
belongs_to :category

# models/product.rb
has_many :categorizations
has_many :categories, :through => :categorizations

# models/category.rb
has_many :categorizations
has_many :products, :through => :categorizations

has_many :through这种方式跟habtm的不同是中间表里可以含有其余的字段信息,并且中间表在Model里明确指出
分享到:
评论
1 楼 blackanger 2007-08-06  
一个join table 一个join model

相关推荐

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    在本篇内容中,我们将深入探讨如何利用Ruby on Rails(简称Rails)这一强大的Web应用程序框架来构建可伸缩且易于维护的RESTful API。Rails以其简洁优雅的语法、高效的开发速度以及良好的社区支持而闻名,这使得它...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种...通过学习这个实例,开发者可以掌握如何在Rails应用中集成第三方库,处理层级数据,以及创建交互式的前端界面。这对于提升Web应用的用户体验非常有价值。

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    ### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助...随着对Rails的深入了解,你将会发现更多高级特性和应用场景,为实际项目开发提供更多可能性。

    Rails 101 入门电子书

    #### 四、Ruby on Rails安装最佳实践 - **安装步骤**: - 环境准备: 确保操作系统支持,并安装必要的软件包。 - 安装Ruby: 使用rbenv、RVM或其他工具进行管理。 - 安装Rails: 使用gem工具安装最新的Rails版本。 ...

    Rails 101S

    ### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...

    Ruby on Rails入门例子

    Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...

    Ruby on Rails入门经典代码

    Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...

    Rails相关电子书汇总

    标题 "Rails相关电子书汇总" 暗示了这个压缩包包含了关于Ruby on Rails框架的电子书籍资源。Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以...

    [Rails] Crafting Rails Applications (英文版)

    [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, ...

    Advanced Rails

    "Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails学习进阶的重要资源,尤其适合已经对基础Rails有一定了解的开发者。 在Web开发领域,Rails以其高效、简洁的代码和“约定优于配置”的哲学吸引...

    Ruby on Rails中的XSS防御策略:构建安全的Web应用

    跨站脚本攻击(XSS)是一种常见的网络安全威胁,它允许攻击者将恶意脚本注入到网页中,影响其他用户的浏览器。Ruby on Rails作为一个流行的服务器端Web应用框架,提供了一系列的机制来帮助开发者防止XSS攻击。本文将...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    RAILS2.1的中文版资料

    - ashchan负责第四章(Active Resource)和第十章(Prototype and script.aculo.us)。 - cash.zhao负责第七章(Action View)和第十三章(Bugs and Fixes)。 - snowzhang负责第二章(Active Record)。 - LibinPan负责...

    rails2.3.2

    6. 开发者工具:Rails 2.3.x 包含了 Rails Console,一个交互式的命令行工具,以及 Rails Server,用于运行应用程序。此外,还有 Scaffolding 机制,可以自动生成基本的 CRUD(创建、读取、更新、删除)操作的控制器...

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成.zip

    webpack-rails, 将 web pack与你的Ruby on Rails 应用程序集成 不再维护webpack-rails 不再被维护。 有关详细信息,请参阅 #90. web pack-railsweb pack 为你提供了将 web pack集成到现有的Ruby on Rails 应用程序中...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Rails recipes

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

Global site tag (gtag.js) - Google Analytics