我是ROR的初学者,但这是我试图实现的目标。我有两个想要关联的项目:事物和人。每一件事都可以有很多人。也就是说,我希望单独创建人员和事物,然后能够将它们链接起来。
例如,我可以创建:比尔·克林顿巴拉克·奥巴马
我可能会创造一些东西:全球变暖,反恐战争
我希望能够将用户比尔·克林顿和巴拉克·奥巴马与这两个问题联系起来。有没有人能给我指个指南,教我怎么做?
发布于 2009-05-10 22:00:23
我认为现在RoR社区越来越少使用has_and_belongs_to_many。虽然仍然支持,但我认为现在更常见的是有一个中间模型(在您的例子中类似于PoliticianMatter)来连接您的Politician和Matter模型。
然后,您的politician_matter表将有一个PK、一个politician_id和一个matter_id。
然后你就有了
class PoliticanMatter < ActiveRecord::Base
belongs_to :politician
belongs_to :matter
end这种方法的优点是,如果需要政治家-> matter关系的未来属性(例如,重要性、上次发生的日期),您有一个提供此功能的模型- has_and_belongs_to_many将不支持添加这些额外属性。
您还可以直接从政治家和物质模型访问多对多关系,如下所示
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发布于 2009-05-10 21:13:31
您需要在这两个实体之间建立many2many关系。
Rails使用has_and_belongs_to_many助手来实现这一点。你可以在文档和许多博客文章中找到更多关于这方面的信息!
发布于 2009-05-10 21:19:22
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
https://stackoverflow.com/questions/846114
复制相似问题