2012-08-17 23 views
0

一個關係,我有三個型號關於一個在模型中軌

class Vehicle < ActiveRecord::Base 
has_one:driver ,:through=>:vehicle_driver 
end 

class Vehicle_Driver < ActiveRecord::Base 
belongs_to:vehicle 
belongs_to:driver 
end 

只有vehicle_id和driver_id

class Driver < ActiveRecord::Base 
has_one:vehicle_driver 
end 

我想要做的就是

  • 註冊車輛獨立

  • 寄存器驅動程序獨立地

  • 然後分配駕駛員車輛使得只有一個驅動器可以被分配到一個車輛反之亦然

和進一步

  • 如果我分配驅動到其他車輛的早期關係必須刪除

這是可能從上面的關係... ?????

任何幫助將不勝感激..

在此先感謝

回答

3
  1. 爲什麼中間類,它違背了你的要求,因此將其刪除。

  2. 所以,只要讓車輛和駕駛員使用has_one的其他。它會產生一個重複的關係,如果它們沒有指向對方,可能會導致問題。所以最好是隻有一個'has_one'關係,並且做@ vehicle.find_by_driver來測試一個司機是否已經有一輛車分配給它。

  3. 當你保存的關係,也更新其他關係: 3A @ vehicle.driver = @driver 3B @ vehicle.driver.vehicle = @vehicle#給力使其指向對方。

  4. 在Vehicle模型中,添加一個方法或範圍以返回驅動程序爲零的車輛列表。 4A Vehicle.all.where(?:driver.nil)#從我的頭,只給一個想法

如果你想刪除的車輛的關係,做 5A @ vehicle.driver。 vehicle = nil 5b @ vehicle.driver = nil

希望這能幫助您朝正確的方向發展。