2013-10-28 54 views
0

我已經搜索並發現了一些與此相關的事情,但似乎無法從帖子中獲得工作解決方案。Rails模型關聯:兩個模型之間的多個關聯

我的情況:我有用戶,我有Carpools;用戶可能是一個拼車的司機(拼車可能只有一個驅動器),或者用戶可以在拼車騎車人(拼車可能有多個車手)

這裏是我的最新嘗試:

class Carpool < ActiveRecord::Base 
    attr_accessible :rider_id 

    belongs_to :driver, class_name: "User", foreign_key: "driver_id" 

    has_many :riders, class_name: "User" 

    def add_rider(user) 
    self.riders << user 
    end 
end 

和用戶

class User < ActiveRecord::Base 
    attr_accessible :driver_id 

    has_many :carpools 

    belongs_to :carpool, class_name: "Carpool", foreign_key: "rider_id" 

end 

相關模式轉儲:

create_table "users", :force => true do |t| 
    t.string "email",     :default => "", :null => false 
    t.string "name" 
    t.integer "driver_id" 
end 

create_table "carpools", :force => true do |t| 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.integer "rider_id" 
end 

我想我可能會執行s與外鍵錯誤...事實上,駕駛員/汽車(駕駛員has_many:carpools)和車手/ carpools(carpool has_many:車手)之間的關係是「backwords」,也正在讓我的大腦霧化。

我在做什麼錯誤什麼是最好的方式來完成這件事?

任何幫助非常感謝,謝謝!

回答

0

按康沃上#rubyonrails的,這種做法可能會爲你工作(爲主旨感謝布里克):

class CarpoolRider 
    belongs_to :carpool 
    belongs_to :rider, class_name: "User" 

    # Schema: 
    # carpool_id 
    # rider_id 
end 
class User 
    has_many :carpools_driven, class_name: "Carpool", foreign_key: "driver_id" 

    has_many :carpool_riders 
    has_many :carpools_ridden, through: :carpool_riders 
end