模型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条目。
答案 0 :(得分:5)
您必须切换模型的has_one
和belongs_to
关系才能更改包含外键的表(关系belongs_to
的模型是持有外键的模型) 。不要忘记根据更改调整迁移(以声明time_log_id
列)。
我认为您正在寻找的“零或一”关系是has_one
关系。此关系不是强制性的(除非您向其添加validation)。