2016-03-30 2 views
0

В моем Ruby On Rails приложения у меня есть две моделей: пользователь и пунктhas_many по логическому значению в рельсах

В моей модели пользователя Я хотел бы отношения, где пользователь может иметь много элементов, как это:

has_many :items 

Для отношений я бы не только использовал столбец user_id в таблице элементов.

Когда я

User.includes(:items) 

Я предпочел бы все пункты, где - элементы user_id принадлежит пользователю (классический способ) - или, например, булево столбец (как all_users) истинно

Может ли это быть сделано с

has_many :items + any special options? 

А как это будет выглядеть?

Благодарность & С уважением, Андреас

ответ

0

User.includes(:items) просто инструктирует рельсы SQL строитель, чтобы загрузить все вложенных элементов жгутов загруженных пользователей.

Это говорит,

User.includes(:items).all # will load all users with all nested items 
User.includes(:items).where(name: 'Joe') # will load user(s) Joe and their items 

это делается, чтобы свести к минимуму количество запросов к базе данных.

ли хочет один, чтобы загрузить все элементы, следует использовать запрос на Item, например:

Item.where(user_id: User.find_by_name('Joe').pluck(:id)) 
+0

Спасибо, но то, что я ищу это, чтобы связать элемент, чтобы один или все пользователи без наличия большого_сочетания, но флажка «all_users». – kernification

+0

Я не умею читать ваши мысли. Btw, это невозможно в реляционных db без manytomany. – mudasobwa