ruby-on-rails – 如何在Rails中管理没有id的表?
发布时间:2020-12-17 01:23:47 所属栏目:百科 来源:网络整理
导读:我有两个模型:人和关系.第二个存储有关两个人之间关系的信息.它有parent_id和child_id字段,并且没有id字段.我用has_many连接它:通过它可以工作. 但: 即使表中存在某些关系,因此Relation.find(:all)也会返回空数组(因为没有id字段). 我不知道如何删除关系
我有两个模型:人和关系.第二个存储有关两个人之间关系的信息.它有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,: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约定……).但我的问题仍未解决. 解决方法
has_many:through取决于连接表中的id.它使连接表成为一个完整的模型.由于每个带记录的操作都带有id,因此如果没有它,您将无法直接与表接口.删除记录时,rails生成sql以通过其id删除记录.如果您有一个充当完整模型的连接表,它必须具有id
或者你可以使用has_and_belongs_to_many,它更像你期望的工作.删除通过其关联而不是直接与关系模型删除对象的关系. 最好的办法是在连接表中添加ID.在未来,如果关系模型变得更加复杂,您可以将其作为自己的实体进行跟踪. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |