这里应该使用哪种模型关系?

时间:2011-10-30 06:23:35

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

表:Raw_Data 字段:id         名称

表:Actual_Data 字段:id         raw_data_id         名称

一个用户可以手动将数据添加到Actual_Data(在这种情况下,它的raw_data_id为NULL),或者他们可以选择一个Raw_Data插入到Actual_Data中(在这种情况下,它设置了raw_data_id)。

在这种情况下,以下关系是否正确?

对于Raw_Data: -none -

对于Actual_Data: has_one:raw_data

2 个答案:

答案 0 :(得分:1)

你是对的,关系应该和你说的一样,

class ActualDate < ActiveRecord::Base
  has_one :raw_data
end

class RawData < ActiveRecord::Base
  belong_to :actual_data
end

根据rails约定,外键应该属于具有belongs_to关联的表,所以这里的actual_data_id应该在raw_datas表中。

编辑: 我们在actual_datas表中不需要raw_data_id。

答案 1 :(得分:0)

我想更好的选择是belongs_to。

Raw_Data has many or has one Actual_Data
Actual_Data belongs to Raw Data.

您必须记住在执行任何操作之前检查raw_data是否为nil。

manually_created = ActualData.create(:name => "Something");
builded = @RawData.build_actual_data(:name => "Something else");

第一个将列设置为null,第二个exaple将raw_data_id设置为@ RawData.id值。