Прежде всего, если вы собираетесь использовать ИЛИ, тогда вам нужно будет использовать строку, а не хеш-синтаксис.Во-вторых, project_ids - это динамическое поле, добавляемое Rails - чтобы сделать то же самое на уровне базы данных, вам нужно будет включить таблицу соединений и использовать ее.
Однако таблица соединений не является признанной ассоциацией в Rails, поэтому я думаю, что вам придется указать соединение вручную.
Примерно так должно работать:
@company.items.joins("left join items_projects on items_projects.item_id = items.id").where("items.public = true OR items_projects.project_id = ?", @project.id)
при условии, что вы используете стандартное имя таблицы HABTM для Rails