Ruby,如何描述三个表间复杂关系,形成长尾?

2026-04-11 20:152阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计376个文字,预计阅读时间需要2分钟。

Ruby,如何描述三个表间复杂关系,形成长尾?

给ActiveRecord中的以下表格:+ 作者 + 网站 + 文章 + 我不知道如何表述作者根据出版物支持的金额不同,但同一出版物工作的作者有不同的费率:+ John以300美元的价格在Foo上发表了一篇论文

给出ActiveRecord中的以下表格:

>作者
>网站
>文章

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

> John以300美元的价格在Foo上发表了一篇文章
> John以350美元的价格在Bar发表文章
> John以400美元的价格在Baz发表了一篇文章
> Dick以250美元的价格在Foo上发表文章
> Dick以400美元的价格在Bar发表文章

等等

我想描述什么样的关系?

目前我有一个带有author_id,site_id和amount列的“费率”表.鉴于publication.id和author.id,我得出了文章的成本

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

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

我认为我不想要代码,因为我希望有人说“噢,这是……关系”,所以我可以抓住我正在琢磨的东西.

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

Ruby,如何描述三个表间复杂关系,形成长尾?

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

本文共计376个文字,预计阅读时间需要2分钟。

Ruby,如何描述三个表间复杂关系,形成长尾?

给ActiveRecord中的以下表格:+ 作者 + 网站 + 文章 + 我不知道如何表述作者根据出版物支持的金额不同,但同一出版物工作的作者有不同的费率:+ John以300美元的价格在Foo上发表了一篇论文

给出ActiveRecord中的以下表格:

>作者
>网站
>文章

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

> John以300美元的价格在Foo上发表了一篇文章
> John以350美元的价格在Bar发表文章
> John以400美元的价格在Baz发表了一篇文章
> Dick以250美元的价格在Foo上发表文章
> Dick以400美元的价格在Bar发表文章

等等

我想描述什么样的关系?

目前我有一个带有author_id,site_id和amount列的“费率”表.鉴于publication.id和author.id,我得出了文章的成本

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

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

我认为我不想要代码,因为我希望有人说“噢,这是……关系”,所以我可以抓住我正在琢磨的东西.

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

Ruby,如何描述三个表间复杂关系,形成长尾?

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