我想为一个人与另一个人的关系建模,这种关系不一定是分层的(即朋友和同事,而不是父母和孩子),我有兴趣捕捉每个关系的更多细节(例如笔记、关系类型,成立日期)。最后,我想使用 act_as_tree 关系来导航/绘制这些关系。
迁移:
class CreateProfiles < ActiveRecord::Migration def self.up
create_table :profiles do |table|
table.column :firstName, :string
table.column :lastName, :string
table.column :telephone, :string
table.column :emailAddress, :string
table.column :location, :string
table.timestamps
end end def self.down
drop_table :profiles end end
class Relationship < ActiveRecord::Migration def self.up
create_table :relationships, :id => false do |table|
table.column my_id :integer
table.column your_id :integer
table.column relationshipType :string
table.column dateEstablished :date
table.column notes :text
table.timestamps end end def self.down
drop_table :relationships end end
型号:
class Person < ActiveRecord::Base
has_many :relationships, :foreign_key => "my_id"
has_many :persons :through => :relationships
end
class Relationship < ActiveRecord::Base
belongs_to :persons
acts_as_tree
end
问题:
- 如何正确定义这些表之间的关系?
- 由于 my_id/your_id 组合是唯一的,消除关系表上的 :id 是否有意义?
- 'my_id' 和 'your_id' 字段是否有更好的名称来利用 RoR 的约定?
- 如果其中一列不是名称“parent_id”,我会在 act_as_tree 关系上遇到困难吗?