在rails中一对一或零关联

hit*_*ani 2 ruby-on-rails ruby-on-rails-3

模型I

class TimeLog < ActiveRecord::Base
    has_one :custom_time_fields,  :dependent => :destroy
end
Run Code Online (Sandbox Code Playgroud)

模型II

class CustomTimeFields <  ActiveRecord::Base
   belongs_to :time_log
end
Run Code Online (Sandbox Code Playgroud)

以上设计就数据库而言

timelogs表+ custom_time_field_id(外键)

custom_time_fields

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

但我想要数据库设计如下

表I:

time_logs

表二

custom_time_fields(将time_log_id作为外键)

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

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

Bal*_*ick 5

你必须切换has_onebelongs_to你的模型的关系来改变包含外键的表(有关系的模型belongs_to是一个持有外键).不要忘记根据更改调整迁移(声明time_log_id列).

我认为你所寻找的"零或一"关系就是has_one关系.此关系不是必需的(除非您向其添加验证).