Rails has_many和belongs_to返回nil

时间:2016-11-01 13:36:12

标签: ruby-on-rails ruby activerecord associations

我有两个模型'文章'和'书签',并使用特定列'article_doi'作为foreign_key关联它们。

在article.rb中,

has_many :bookmarks, class_name: 'Bookmark', foreign_key: "article_doi", dependent: :destroy

在bookmark.rb中,

 belongs_to :article, class_name: 'Article', foreign_key: "article_doi"

但是当我做article_object.bookmarks时,它返回一个nil 此外,当我执行bookmark_object.article时,它返回nil。

出了什么问题?

1 个答案:

答案 0 :(得分:1)

正如@AndreyDeineko所说,有一些步骤可以让has_many / belongs_to关联起作用:

  1. has_many/belongs_to声明添加到模型中(看起来就像你已经这样做了)。
  2. 创建并运行database migration,将article_doi列添加到数据库中的bookmarks表中(具有belongs_to的模型是保存引用的表)
  3. 重新启动rails服务器或控制台,因此它会注意到新列。
  4. 最后,您实际上需要在链接的数据库中保存一些记录!

    a = Article.first
    b = a.bookmarks.build
    b.save!
    a.reload.bookmarks.count # => 1