我想在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?
非常感谢。
答案 0 :(得分:0)
我知道这是一个旧帖子,但我猜它与外键存储为的字段类型有关。如果它不是BSON ObjectId,那么它可能不会返回任何内容。
答案 1 :(得分:0)
您需要根据字段定义同时设置foreign_key
和primary_key
。您提供的代码确实尊重primary_key
,但是在作者看来,该值是在_id
中而不是serial_num
中查找的。有关更多详细信息和示例,请参见the documentation。
belongs_to :author, foreign_key: 'serial_num', primary_key: 'serial_num'