【发布时间】:2018-03-26 16:49:45
【问题描述】:
我有模型Article 和Language(表articles 和languages)。
文章has_many languages 和语言belongs_to article。
我想用他们的语言选择文章。
我在Article 模型中使用它:
def self.articles_per_page(limit, offset)
joins("LEFT JOIN languages ON languages.article_id = articles.id")
.select('articles.id, languages.language, COUNT(languages.id) as all_languages')
.limit(limit).offset(offset)
.group('articles.id, languages.language')
end
在articles_controller:
def get_per_page
limit = 40
render json: Article.articles_per_page(limit, params[:offset])
end
然后我发出Ajax 请求以获取JSON 的文章及其语言的响应:
$.get(articlesUrl + '?offset=' + offset, function(article){
$.each(article, function(index, performance){
$('#articleTable').append(// DATA //);
});
offset = $('#articleTable').children('.articleRow').length;
})
问题是,如果我在 articles 表中有 1 篇文章,并且在语言表中与这篇文章关联的示例 3 种语言,它会返回 3 行与同一篇文章。
【问题讨论】:
-
所以在你获得这个活动记录关联之后,你希望它在某些视图中呈现,对吗?
-
是的。我在控制器
@articles = Article.articles_per_page(20, 0)中调用这个方法,然后在视图中使用它。 -
一种语言如何属于一篇文章?没有文章使用相同的语言?
-
另一个问题。您的查询按文章和语言分组,因此如果同一文章有 3 种语言,它显然会返回 3 行。你真的想用这个查询返回什么?
-
Lmao 我 2 岁的孩子在我吃午饭时不知何故发布了一个答案。视图是什么样的?你的
select()和group()的目的是什么?
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 ruby-on-rails-3.2