СУХОЙ способ добавить одно и то же условие на многие запросы - PullRequest
1 голос
/ 13 марта 2011

Я использую рельсы 3.0.5

У меня есть User и Company модели, пользователь belongs_to a Company.

Product, Bill, несколько других также belongs_to a Company.

По очевидным причинам User может действовать на Product, Bill ... только если Product's Company совпадает с User's Company.

Я могу использовать пользовательские запросы области, добавляя условие для компании для всего, но это вовсе не СУХОЙ.

Как бы вы сделали это так хорошо?

Спасибо

Ответы [ 3 ]

3 голосов
/ 13 марта 2011
@product = current_user.company.products.find params[:id]

должно работать.Если вы хотите высушить его дальше, я бы порекомендовал использовать плагин InheritedResources , который имеет приятный метод с именем begin_of_association_chain (см. README в разделе «Перезапись по умолчанию»), который позволяет вам определять этот материал глобально.

0 голосов
/ 13 марта 2011

Вы можете определить ассоциацию

has_many: products,: through =>: компания

Тогда вы можете сделать

пользователем.products.find (params [: id])

Не уверен, что это правильный способ сделать это !!!

0 голосов
/ 13 марта 2011

Вы смотрели в именованные области?http://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.html

Похоже, именно то, что вы ищете

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