当前位置:  开发笔记 > 编程语言 > 正文

我不明白如何表达三个独立的表之间的关系

如何解决《我不明白如何表达三个独立的表之间的关系》经验,为你挑选了1个好方法。

给出ActiveRecord中的以下表格:

作者

网站

用品

我不知道如何表达作者根据出版物支付的金额不同,但为同一出版物工作的作者有不同的费率:

约翰以300美元的价格在Foo上发表了一篇文章

约翰在Bar发表了一篇350美元的文章

约翰以400美元的价格在Baz发表了一篇文章

迪克以250美元的价格在Foo上发表了一篇文章

Dick以400美元的价格在Bar发表了一篇文章

等等

我想描述什么样的关系?

目前我有一个带有作者_id, site_id和金额列的"费率"表.鉴于publication.id和author.id,我得出了文章的成本

cost = Rate.find(:first, :conditions => ["author_id = ? and site_id = ?", author.id, site.id]).rate

这是有效的,但我不确定这是最好的方式,而且我不确定如何确保我最终没有'John'为'Baz'提供两种费率.

我认为我不想要代码,因为我希望有人说"噢,这是......关系"所以我可以抓住我正在谷歌的东西.



1> Alex Wayne..:

它是一个拥有并且属于许多具有丰富连接表的人.

class Author
  has_many :publications, :through => :rates
end

class Publication
  has_many :authors, :through => :rates
end

class Rate #rich join table
  belongs_to :author
  belongs_to :publication
end

然后你可以简化你的发现:

@author.rates.find_by_site_id(123)

此外,您可以通过联接表直接访问

@author.publications
@publication.authors

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有