当前位置:  开发笔记 > 数据库 > 正文

如何在Rails中管理没有id的表?

如何解决《如何在Rails中管理没有id的表?》经验,为你挑选了1个好方法。

我有两个模型:人和关系.第二个存储有关两个人之间关系的信息.它有parent_id和child_id字段,并且没有id字段.我用has_many连接它:通过它可以工作.

但:

    即使表中存在某些关系,Relation.find(:all)也会返回空数组(因为没有id字段).

    我不知道如何删除关系.

我的模型看起来像这样:

class Person < ActiveRecord::Base
  has_many :child_relations, 
           :class_name => "Relation", 
           :foreign_key => "parent_id"
  has_many :parent_relations, 
           :class_name => "Relation", 
           :foreign_key => "child_id"

  has_many :children, :through => :child_relations
  has_many :parents, :through => :parent_relations
end

class Relation < ActiveRecord::Base
  belongs_to :parent, :class_name => "Person"
  belongs_to :child, :class_name => "Person"
end

有什么建议?

更新:我使用过has_many:通过 becouse我还存储有关表中关系类型的信息.目前我放弃了,我在我的表中添加了id字段(Rails约定......).但我的问题仍未解决.



1> Alex Wayne..:

has_many:through取决于连接表中的id.它使连接表成为一个完整的模型.由于每个带记录的操作都带有id,因此如果没有它,您将无法直接与表接口.删除记录时,rails生成sql以通过其id删除记录. 如果您有一个充当完整模型的连接表,它必须具有id

或者你可以使用has_and_belongs_to_many更像你期望的工作.删除通过其关联而不是直接与关系模型删除对象的关系.

最好的办法是在连接表中添加一个ID.在未来,如果关系模型变得更加复杂,您可以将其作为自己的实体进行跟踪.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有