我试图展示一些文章。文章包含两个模型(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'
答案 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
是正确答案。我想这个对象返回数组。