Mongoid belongs_to指定foreign_key

时间:2014-09-11 22:44:47

标签: foreign-keys mongoid

我想在has_many和belongs_to两个Mongoid模型之间建立一个关系并指定一个外键,如下所示:

class Author
  include Mongoid::Document

  field :serial_num, :type => Integer
  field :author_name, :type => String

  has_many :books
end

class Book
  include Mongoid::Document

  field :serial_num, :type => Integer
  field :book_name, :type => String

  belongs_to :author, foreign_key: 'serial_num'
end

然而,这不起作用。我的IRB输出:

irb :001> b = Book.first
=> #<Book _id: 1, serial_num: "12345", book_name: 'something', author_id: nil>
irb :002> b.author
=> nil

是否可以将'serial_num'指定为此关系的外键,或者我是否坚持使用author_id?

非常感谢。

2 个答案:

答案 0 :(得分:0)

我知道这是一个旧帖子,但我猜它与外键存储为的字段类型有关。如果它不是BSON ObjectId,那么它可能不会返回任何内容。

答案 1 :(得分:0)

您需要根据字段定义同时设置foreign_keyprimary_key。您提供的代码确实尊重primary_key,但是在作者看来,该值是在_id中而不是serial_num中查找的。有关更多详细信息和示例,请参见the documentation

  belongs_to :author, foreign_key: 'serial_num', primary_key: 'serial_num'