模型A :: B belongs_to foreign_key

时间:2011-06-15 01:33:16

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

假设我有一个模型A :: B has_many模型C,我怎么命名外键?

Class A::B
 has_many :c

Class C
 belongs_to :a_b

在数据库中,表C有一列a_b_id。 这不起作用。知道我错过了什么吗? ::是我很困惑的。谢谢!

1 个答案:

答案 0 :(得分:4)

由于B位于不同的命名空间中,因此您需要在班级C中指定它。

class C < ActiveRecord::Base
  belongs_to :a_b, :class_name => "A::B"
end

由于您使用的是a_b_id而非b_id,因此您需要在A::B

中指定外键
class A::B < ActiveRecord::Base
  has_many :c, :foreign_key => "a_b_id"
end

或者,您可以使用以下设置来避免在A::B

中指定外键
class C < ActiveRecord::Base
  belongs_to :b, :class_name => "A::B"
end

class A::B < ActiveRecord::Base
  has_many :c
end

b_id

表中需要C