2

模型一

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

模型二

class CustomTimeFields <  ActiveRecord::Base
   belongs_to :time_log
end

以上在数据库方面的设计将是

时间日志表 + custom_time_field_id(外键)

custom_time_fields

因此,当我删除时间日志条目时,其关联的“custom_time_field”将被 rails 自动删除

但我想要如下的数据库设计

表一:

时间日志

表二

custom_time_fields(以 time_log_id 作为外键)

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

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

4

1 回答 1

5

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

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

于 2012-05-12T10:05:29.667 回答