2012-05-12 49 views
1

型號我一對一或在軌零協會

class TimeLog < ActiveRecord::Base 
    has_one :custom_time_fields, :dependent => :destroy 
end 

型號II

class CustomTimeFields < ActiveRecord::Base 
    belongs_to :time_log 
end 

上述數據庫方面的設計將是

timelogs表+ custom_time_field_id(外鍵)

custom_time_fields

所以當我刪除timelog項及其相關的 'custom_time_field' 將自動被護欄

刪除,但我想數據庫設計像下面

表I:

time_logs

表II

custom_time_fields(將time_log_id作爲外鍵)

表我有表II

零個或一個協會我怎麼能代表上述Rails的模型數據庫設計,所以,當我刪除time_log,相關custom_time_field項是自動刪除。

+0

您當前的代碼有什麼問題? –

+0

我只是需要改變設計 –

+0

我沒有看到目前的 –

回答

4

您必須切換模型的has_onebelongs_to關係才能更改包含外鍵的表格(關係爲belongs_to的模型是持有外鍵的模型)。不要忘記根據變化調整遷移(聲明time_log_id列)。

我認爲您正在尋找的「零或一個」關係是has_one關係。這種關係不是強制性的(除非你添加一個validation)。

+0

但在那種情況下,當time_entry被刪除時,custom_time_field條目是否會被自動刪除?因爲time_entry不知道custom_time_field –

+0

是的,'dependent'選項也可用於'belongs_to'關係。 Rails將爲你處理刪除相關對象。參見選項指南:4.1.2 http://guides.rubyonrails.org/association_basics.html#belongs_to-association-reference – Baldrick

+0

哦!得到它了。 thnx的解釋 –