Хорошо, Рельс Нуб здесь,: D
Похоже, has__many: сквозной это последний лучший способ справиться со многими отношениями, но я пытаюсь сделать это простым. Надеюсь, один из вас, гуру, уже справлялся с этой ситуацией раньше:
Вот базовая модель, которую я сейчас имею:
class User < ActiveRecord::Base
has_and_belongs_to_many :products
end
class Product < ActiveRecord::Base
has_and_belongs_to_many :users
has_and_belongs_to_many :clients
end
class Client < ActiveRecord::Base
has_and_belongs_to_many :products
end
По сути, у меня есть пользователи в системе, которые будут иметь доступ (через ассоциацию) ко многим создаваемым продуктам, у этих продуктов много клиентов, но клиенты также могут быть частью многих продуктов, а продукты Доступ многих пользователей.
Все ассоциации работают хорошо, но теперь я хочу, чтобы пользователи могли добавлять клиентов к своим продуктам, а видеть только клиентов, связанных с продуктами, к которым у них есть доступ.
Scenario:
Given Bob has access to product A and B
And does NOT have access to product C
And and has clients on product B
And wants to add them to product A.
When in product A Bob should see clients from product B in his add list,
And Bob should not see clients from product C
Мой опыт работы с рельсами не позволяет мне узнать, как лучше построить массив, который будет содержать его список клиентов.
Я думаю о том, чтобы использовать @ bob.products для получения продуктов, к которым у Боба есть доступ, затем к каждому. Найти клиентов, связанных с каждым продуктом, а затем объединить их в один массив. Но разве это ЛУЧШИЙ способ?
Спасибо!