我对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
答案 0 :(得分:1)
你可以通过在belongs_to关联中指定类名来告诉Rails leader_id确实是一个Person id:
class Session < ActiveRecord::Base
belongs_to :leader, :class_name => "Person"
end