Rails HABTM读取唯一记录

时间:2010-12-28 21:43:06

标签: ruby-on-rails has-and-belongs-to-many

这就是我所拥有的。

client has_many branches

branch has_many projects

project has_and_belongs_to_many announcements

是否有更简单的方法可以找到给客户的公告?

我需要一系列独特的公告。

3 个答案:

答案 0 :(得分:0)

为什么不创建一个连接表来处理客户端和公告模型之间的多对多关系?类似的东西:

Client:

has_many :announcements, :through => :client_announcements

Announcement:

has_many :clients, :through => :client_announcements

ClientAnnouncements:

belongs_to :client
belongs_to :project

然后,您可以设置一个对象来查找附加到特定客户端ID的公告,反之亦然。

PS:答案可能不是详尽无遗的,我不是原生的Rails开发人员 - 请查看API文档,了解我所涉及的内容:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

答案 1 :(得分:0)

如果客户可以有多个公告,但公告只能属于一个客户,则使用:

Client:

has_many :announcements

Announcement:

belongs_to :client

这使它保持在ActiveRecord中。您可以通过一些快速方法调用找到给定客户的公告。向下滚动到“关联加入模型”,例如:http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

答案 2 :(得分:0)

您可以使用habtm

上的uniq符号创建新关系
has_and_belongs_to_many :uniq_announcements, :source=>:announcements, :uniq=>true

或只是简单地调用uniq!

project.announcements.uniq