Rails - Понимание того, как запрашивать Objectin Rails 3 - PullRequest
0 голосов
/ 21 октября 2010

если у меня есть следующее:

@projects = Permission.where(["user_id >= ?", 21])

Результаты в:

[#<Permission id: 59, project_id: 13, user_id: 21>, #<Permission id: 59, project_id: 13, user_id: 21>]

И что потом использовать эти project_id для QUERY следующим образом:

AuditLog.where({ :project_id => @projects }).limit(10)

а это ошибки?

NoMethodError: undefined method `project_id' for [#<Permission id: 59, project_id: 13, user_id: 21>]:ActiveRecord::Relation

Идеи? спасибо

1 Ответ

1 голос
/ 21 октября 2010

Для начала давайте очистим ваш первый запрос:

@permissions = Permission.where(['user_id >= ?', 21])

Это меньше вводит в заблуждение насчет того, что на самом деле хранит @permissions.Далее, помните, что это массив, и в следующем запросе вы говорите «где project_id - список объектов разрешений ruby», и это не делает правильный запрос.

Вы можете получитьинформация, которую вы хотите, хотя.Во-первых, используйте метод ruby ​​array.map, чтобы просмотреть все разрешения и собрать их project_id:

@project_ids = @permissions.map(&:project_id)

Теперь вы можете указать базе данных захватить все журналы аудита, где в списке находится project_id:

@audit_logs = AuditLog.where(['project_id in (?)', @project_ids])

Это должно дать вам то, что вам нужно.Дайте мне знать, если у вас есть какие-либо вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...