Как мне моделировать эти отношения в Rails - PullRequest
0 голосов
/ 18 августа 2010

Я немного новичок в рельсах, поэтому, если это очень просто, пожалуйста, потерпите меня.

Я создаю что-то вроде приложения чата.Моя модель выглядит следующим образом (из 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 - это внешний ключ в таблице пользователей как таковой:

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 Ответ

1 голос
/ 18 августа 2010

Вы можете сообщить Rails, что leader_id действительно является идентификатором Person, указав имя класса в ассоциации assign_to:

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