Рельсы много ко многим, существуют?запрос - PullRequest
1 голос
/ 08 марта 2012

У меня есть отношение один ко многим между папками и таблицами документов.Я хочу посмотреть, содержит ли папка документ:

q = Doc.new(blabla)

folder.docs.inludes?(q)

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Я думаю, вы должны попробовать

folder.docs.exists? (Q)

0 голосов
/ 08 марта 2012

Если вы создаете новый Doc, подобный этому, независимо от содержимого Doc, он никогда не будет идентичен любому другому Doc в базе данных (что касается include?), Так как Doc будет иметь разные идентификаторы/ объектные хэши.

Если вы хотите иметь возможность сравнивать документы, основанные на содержании, а не на фактической записи (на которую ссылается id), вы могли бы получить eql?(==) - см. здесь: http://ruby -doc.org / core-1.9.3 / Object.html # method-i-eql-3F .Я бы не советовал это делать.

Я бы в идеале переосмыслил ваше решение здесь.Что вы пытаетесь проверить, чтобы увидеть, содержит ли папка документ с определенным именем?

folder.docs.find_by_name('blabla')

Если вы получили не ноль результат, у вас есть документ в папке с именем 'blabla', если это ноль, вы не делаете.

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