Many-to-Many Relationships with Extra Data 带有数据的多对多关系
一般多对多关系都带有 一个存储关系的表 这表一般用处比较单一 但是有时也需要在这个表中添加除关系以外的数据 下面有个订杂志的例子
一般情况下
def self.up
create_table :magazines do |t|
t.column :title, :string
end
create_table :readers do |t|
t.column :name, :string
end
create_table :magazines_readers, :id => false do |t|
t.column :magazine_id, :integer
t.column :reader_id, :integer
end
但是 这个:magazines_readers 表 在添加一些属性后就可以作为一个订阅模型使用
不再是单纯存储:magazines 和:readers 的关系 如下
def self.up
drop_table :magazines_readers
create_table :subscriptions do |t|
t.column :reader_id, :integer
t.column :magazine_id, :integer
t.column :last_renewal_on, :date
t.column :length_in_issues, :integer
end
end
三个模型的设置如下
class Subscription < ActiveRecord::Base
belongs_to :reader
belongs_to :magazine
end
class Reader < ActiveRecord::Base
has_many :subscriptions
has_many :magazines, :through => :subscriptions
end
class Magazine < ActiveRecord::Base
has_many :subscriptions
has_many :readers, :through => :subscriptions
end
定义自己的查询方法
class Magazine < ActiveRecord::Base
has_many :subscriptions
has_many :readers, :through => :subscriptions
has_many :semiannual_subscribers,
:through => :subscriptions,
#注意这里用source
:source => :reader,
:conditions => ['length_in_issues = 6' ]
end
例子
chad> ruby script/console
>> Magazine.find(1).semiannual_subscribers
=> [#<Reader:0x26ba05c @attributes={"name"=>"Anthony Braxton", "id"=>"1"}>]
分享到:
相关推荐
Ruby三神书之一(其余的两本是Agile.Web.Development.with.Rails和Ruby For Rails,在我的资源列表也有) Rails is large, powerful, and new. How do you use it effectively? How do you harness the power? And, ...
顾名思义,就是讲rails的小技巧,给你上rails的大餐,都是大牛们写的文章,对于想掌握常用技巧的开发者很有帮助
Rails Recipes Final.pdf
Rails Recipes
Ruby三神书之一(其余的两本是Agile.Web.Development.with.Rails和Ruby For Rails,在我的资源列表也有) Rails is large, powerful, and new. How do you use it effectively? How do you harness the power? And, ...
"Advanced Rails Recipes" is filled with pragmatic recipes you'll use on every Rails project. And by taking the code in these recipes and slipping it into your application you'll not only deliver your...
"Advanced Rails Recipes" is filled with pragmatic recipes you'll use on every Rails project. And by taking the code in these recipes and slipping it into your application you'll not only deliver your...
Advanced Rails Recipes 正式版。 不要资源分,免费提供,要下的赶快哦。。。
Rails.Recipes.Rails.3.Edition.和源码
像所有好的食谱一样,Rails Recipes 提供各种主题的不同处方集,例如用户界面、控制器、数据库、测试、蓝图和电子邮件。它也将标签分配给每个处方,以确定该处方涵盖什么内容。
官方推荐的Ruby On Rails书籍,Rails Recipes 2012最新版,英文, 专业ruby程序员必备
ruby rails web development recipes
Written for novice to intermediate Rails developers, Rails Recipes: Rails 3 Edition is packed with solutions to 70 of the most vexing problems you’re likely to face on the job. From building custom ...
专业RoR参考手册..
Ruby Recipes A Problem-Solution Approach 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊官网搜索此书
Rails_Recipes_with_Source_Code
Pragmatic.Bookshelf.Advanced.Rails.Recipes.May.2008