为什么无法获得儿童模型对象?

时间:2017-02-01 08:21:56

标签: ruby-on-rails

我试图展示一些文章。文章包含两个模型(Article,ArticleHistory)。 现在,我只是遇到了一个我无法显示文章历史记录列的问题。

这里的控制器

  def show
    binding.pry
    @article = Article.find(params[:id])
    @article = Article.get_article(article_id: params[:id], version: @article.current_version)
  end

此处的模特

class Article < ApplicationRecord
  has_many :article_histories
  has_many :article_images
  belongs_to :user
  accepts_nested_attributes_for :article_histories

  scope :get_article, -> (id, version){ joins(:article_histories).merge(ArticleHistory.select_version(id, version))}
end

class ArticleHistory < ApplicationRecord
  belongs_to :article

  scope :select_version, -> (id, version){ where("article_id = ? and version = ?", id, version) }

end

这是观点(.slim)。

h1 = @article.article_histories.title
h2 = t :content
=@article.content.html_safe
h3 = t :category

这是银色的。请帮帮我。

[附录] 错误消息是这样的

NoMethodError undefined method 'article_histories'

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

@article = Article.find(params[:id])
@article = Article.where(id: params[:id]).includes(:article_histories).where(article_history: {version: @article.current_version})

答案 1 :(得分:0)

我解决了我的问题。

@article.first.article_histories.first.title

是正确答案。我想这个对象返回数组。