Составной ключ Rails activerecord Id и тип - PullRequest
0 голосов
/ 01 августа 2010

скажем, у меня есть таблица животных, у которой есть столбец parent_id Скажите также, что у меня есть type_id на столе, чтобы указать виды

Итак, в моем классе животных Animall.all вернул бы всех животных.

Скажите, что теперь я добавляю два новых типа животных, собаку и кошку в таблицу animal_types. Так что теперь у некоторых животных type_id равен 1, а у некоторых 2.

Я мог бы написать named_scope на Animal, чтобы вернуть всех кошек или всех собак.

Но что, если я захочу пойти по пути создания классов кошек и собак, которые ссылаются на таблицу животных, поэтому в классе собак dog.all должен выдать запрос, выберите * среди животных, где type_id = 1

Затем скажите, что я создал класс с именем person и добавил отношение has_many: dogs

Как я могу сделать эту работу?

1 Ответ

1 голос
/ 01 августа 2010

В рельсах это можно сделать как STI (наследование одной таблицы). Короткий ответ - добавить поле типа в таблицу, а затем подкласс животных.

см. http://api.rubyonrails.org/classes/ActiveRecord/Base.html

так что в вашем случае вы бы.

class Animal < ActiveRecord::Base; end
class Dog < Animal; end
class Cat < Animal; end 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...