- Одна категория может иметь одну или несколько категорий
Одна категория относится (необязательно) к одной категории
def index
@categories = Category.all
render json: @categories, include: 'categories.**', only: [:name, :category_id]
end
Этот кодтолько рендеринг одного уровня ассоциации:
[
{
"name": "any1",
"category_id": null,
"categories": [
{
"id": 13,
"name": "any2",
"created_at": "2019-04-01T02:21:02.258Z",
"updated_at": "2019-04-01T02:21:02.258Z",
"category_id": 12
}
]
},
{
"name": "any2",
"category_id": 12,
"categories": [
{
"id": 14,
"name": "any3",
"created_at": "2019-04-01T02:21:48.600Z",
"updated_at": "2019-04-01T02:21:48.600Z",
"category_id": 13
}
]
},
{
"name": "any3",
"category_id": 13,
"categories": []
}
]
В идеале я бы получил "any3" внутри "any2", в соответствии с Rails Api Documentation я могуВыполните это, добавив «category. *» для одного уровня или «. **» для всех ассоциаций, но ни одна из них не работает.
render json: @categories, include: 'categories.**', only: [:name, :category_id]
Ошибка:
NoMethodError (undefined method `categories.*' for #
<Category:0x00007fae0c950ff8>
category.рб
class Category < ApplicationRecord
belongs_to :category, :class_name => 'Category', optional: true
has_many :categories, :class_name => 'Category', :foreign_key => 'category_id'
accepts_nested_attributes_for :category
end