我如何在Rails中建模这种关系

时间:2010-08-18 06:24:16

标签: ruby-on-rails associations

我对rails有点新意,所以如果这是非常基本的,请耐心等待。

我正在创建类似聊天应用程序的东西。我的模型看起来像这样(来自schema.rb)

create_table "people", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "session_id"
end

create_table "sessions", :force => true do |t|
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "leader_id"
end

我已经建立了我想要的基本关系 - 这就是session_id是people表中的外键:

class Person < ActiveRecord::Base
belongs_to :session
end

class Session < ActiveRecord::Base
has_many :people
end

我希望leader_id现在是会话的“主持人”(因此它只是一个人的外键)。如何设置其他关联,以便我可以这样做:

session = Session.find_by_id(1)
host = Person.new(:name => 'joebob')
session.leader = host

1 个答案:

答案 0 :(得分:1)

你可以通过在belongs_to关联中指定类名来告诉Rails leader_id确实是一个Person id:

class Session < ActiveRecord::Base
  belongs_to :leader, :class_name => "Person"
end