2

モデルⅠ

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

モデルⅡ

class CustomTimeFields <  ActiveRecord::Base
   belongs_to :time_log
end

データベースの観点から上記の設計は

timelogs テーブル + custom_time_field_id (外部キー)

custom_time_fields

したがって、タイムログエントリを削除すると、関連する「 custom_time_field」がレールによって自動削除されます

しかし、次のようなデータベース設計が必要です

表 I:

time_logs

表Ⅱ

custom_time_fields (外部キーとして time_log_id を持つ)

表 I には、表 II のゼロまたは 1 つの関連付けがあります。

上記のデータベース設計を Rails モデルで表すにはどうすればよいですか。time_log を削除すると、関連する custom_time_field エントリが自動的に削除されます。

4

1 に答える 1

5

外部キーを含むテーブルを変更するには、モデルのhas_oneとリレーションを切り替える必要があります (リレーションを持つモデルは、外部キーを保持するモデルです)。変更に従って移行を適応させることを忘れないでください (列を宣言するため)。belongs_tobelongs_totime_log_id

あなたが探している「0または1」の関係が関係だと思いますhas_one。この関係は必須ではありません (検証を追加しない限り)。

于 2012-05-12T10:05:29.667 に答える