我有一个数据模型,我希望有一个项目具有可以编辑的描述。我还想跟踪项目的所有编辑。我遇到了当前战略的问题,即:
class Item < ActiveRecord::Base
has_one :current_edit,
:class_name => "Edit",
:foreign_key => "current_edit_id"
has_many :edits
end
class Edit < ActiveRecord::Base
belongs_to :item
end
Item可以像这样与同一个类有多个关联吗?
我原本以为我应该转而在Edit对象中跟踪编辑版本,然后只根据此版本对has_many
关系进行排序。
答案 0 :(得分:1)
是的,它可以。但您必须使用belongs_to
而不是has_one
。然后你的模型必须看起来像:
(Item, current_edit_id, ...)
(Edit, item_id, ....)
rails doc更详细地解释了这一点:Is it a belongs_to or has_one association?