在rails中一对一或零关联

时间:2012-05-12 09:50:07

标签: ruby-on-rails ruby-on-rails-3

模型I

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'将被rails自动删除

但我想要数据库设计如下

表一:

time_logs

表二

custom_time_fields(将time_log_id作为外键)

表I将有 零或一个 表II的关联

如何在Rails模型中表示上述数据库设计,以便在删除time_log时,自动删除关联的custom_time_field条目。

1 个答案:

答案 0 :(得分:5)

您必须切换模型的has_onebelongs_to关系才能更改包含外键的表(关系belongs_to的模型是持有外键的模型) 。不要忘记根据更改调整迁移(以声明time_log_id列)。

我认为您正在寻找的“零或一”关系是has_one关系。此关系不是强制性的(除非您向其添加validation)。