mph*_*mph 3 ruby activerecord database-design
给出ActiveRecord中的以下表格:
我不知道如何表达作者根据出版物支付的金额不同,但为同一出版物工作的作者有不同的费率:
等等
我想描述什么样的关系?
目前我有一个带有作者_id, site
_id和金额列的"费率"表.鉴于publication.id和author.id,我得出了文章的成本
cost = Rate.find(:first, :conditions => ["author_id = ? and site_id = ?", author.id, site.id]).rate
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我不确定这是最好的方式,而且我不确定如何确保我最终没有'John'为'Baz'提供两种费率.
我认为我不想要代码,因为我希望有人说"噢,这是......关系"所以我可以抓住我正在谷歌的东西.
它是一个拥有并且属于许多具有丰富连接表的人.
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
Run Code Online (Sandbox Code Playgroud)
然后你可以简化你的发现:
@author.rates.find_by_site_id(123)
Run Code Online (Sandbox Code Playgroud)
此外,您可以通过联接表直接访问
@author.publications
@publication.authors
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
791 次 |
最近记录: |