我有两个型号。 Office
和Employee
。 Employee
将office_id
作为foreign_key。这些表是在命名空间下生成的。那么,哪个是正确的?
class MyNamespace::Office < ActiveRecord::Base
has_many :employees, foreign_key: 'office_id'
end
class MyNamespace::Employee < ActiveRecord::Base
belongs_to :office, foreign_key: 'office_id'
end
或者
class MyNamespace::Office < ActiveRecord::Base
has_many :employees
end
class MyNamespace::Employee < ActiveRecord::Base
belongs_to :office, foreign_key: 'office_id'
end
我认为第二个例子是正确的,因为对我而言,没有意义声明has_many
关系中的foreign_key。同事认为第一个例子是正确的。但我没有找到太多关于这个主题的参考资料。那么,有人知道哪个是正确的例子,为什么?
答案 0 :(得分:3)
您可以指定前缀以正确映射到DB中的表名,并删除foreign_keys和MyNamespace。
class Office < ActiveRecord::Base
self.table_name_prefix = 'namespace_'
has_many :employees
end
class Employee < ActiveRecord::Base
self.table_name_prefix = 'namespace_'
belongs_to :office
end