我是 ROR 的开始,但这就是我想要实现的目标。我有两个要关联的项目:事物和人。每件事可以有很多人。也就是说,我想分别创建人和事,然后再将它们联系起来。
例如,我可以创建:Bill Clinton Barack Obama
我可能会制造问题:全球变暖 反恐战争
我希望能够将用户 Bill Clinton 和 Barack Obama 与这两件事联系起来。有人可以指点我一个可以告诉我如何做到这一点的教程吗?
我是 ROR 的开始,但这就是我想要实现的目标。我有两个要关联的项目:事物和人。每件事可以有很多人。也就是说,我想分别创建人和事,然后再将它们联系起来。
例如,我可以创建:Bill Clinton Barack Obama
我可能会制造问题:全球变暖 反恐战争
我希望能够将用户 Bill Clinton 和 Barack Obama 与这两件事联系起来。有人可以指点我一个可以告诉我如何做到这一点的教程吗?
我认为has_and_belongs_to_many
现在 RoR 社区越来越少地使用它。虽然仍然受支持,但我认为现在更常见的是有一个中间模型(在您的情况下类似于PoliticianMatter
)来加入您的Politician
和Matter
模型。
然后你的politician_matter
桌子会有一个PK,一个politician_id
和一个matter_id
。
然后你有
class PoliticanMatter < ActiveRecord::Base
belongs_to :politician
belongs_to :matter
end
这种方法的优点是,如果需要政治家的未来属性-> 物质关系(例如重要性,最后发生的日期),您有一个模型可以提供此功能-has_and_belongs_to_many
不支持添加这些额外属性。
您还可以像这样直接从 Politician 和 Matter 模型访问多对多关系
class Politician < ActiveRecord::Base
has_many :politician_matters
has_many :matters, :through => :politician_matters
end
class Matter < ActiveRecord::Base
has_many :politician_matters
has_many :politicians, :through => :politician_matters
end
您需要在这两个实体之间建立多对多关系。
Rails 使用has_and_belongs_to_many
helper 来做到这一点。您可以在文档和许多博客文章中找到更多相关信息!
class Politician < ActiveRecord::Base
has_and_belongs_to_many :tasks
end
class Task < ActiveRecord::Base
has_and_belongs_to_many :politicians
end
你需要的是3个表:
politicians, tasks
和politicians_tasks
(有两列politician_id
和task_id
,没有主键)
希望这有助于 Seb