I have models Article
and Language
. Article has_many :languages
and Language belongs_to: :article
. I have method for selecting articles with their languages in Article
model:
def self.per_page(limit, offset)
left_joins(:languages)
.limit(limit).offset(offset)
.select('articles.id, articles.title, languages.language')
.group(:id)
end
I call this method in articles_controller.rb
:
def index
limit = 40
@articles = Article.per_page(limit, params[:offset])
byebug
render json: @articles
end
I have in articles
one row with id=105
and three rows in languages
table with article_id=105
The problem is that it selects only the first row per related article in languages table, but not all. Now JSON looks like:
{
id: 105
title: 'Some title',
language: 'English'
}
I want to select all articles with all related to them languages and JSON output to be like :
{
id: 105
title: 'Some title',
language: ['English', 'French', ...]
}
How can I do that ? It is not a problem if it is more than one request in the controller.
Aucun commentaire:
Enregistrer un commentaire