2

我想为一个人与另一个人的关系建模,这种关系不一定是分层的(即朋友和同事,而不是父母和孩子),我有兴趣捕捉每个关系的更多细节(例如笔记、关系类型,成立日期)。最后,我想使用 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

问题:

  1. 如何正确定义这些表之间的关系?
  2. 由于 my_id/your_id 组合是唯一的,消除关系表上的 :id 是否有意义?
  3. 'my_id' 和 'your_id' 字段是否有更好的名称来利用 RoR 的约定?
  4. 如果其中一列不是名称“parent_id”,我会在 act_as_tree 关系上遇到困难吗?
4