Ответ Дана, приведенный выше, является правильным, но, как более простая версия, для создания ассоциации, которую вы описываете, вам нужно:
class Company < ActiveRecord::Base
has_many :products
has_many :users
end
class Product < ActiveRecord::Base
belongs_to :company
end
class User < ActiveRecord::Base
belongs_to :company
end
Таблицам Product и User нужен столбец с именем company_id
.
Вот и все! Теперь ActiveRecord будет интеллектуально связывать объекты от вашего имени, и вы можете делать такие вещи, как:
@product = Product.new(params[:product])
@product.company = current_user.company
@product.save
Лучший способ понять, как работают все эти отношения, - поиграть с ними в консоли. Попробуйте что-то вроде:
Company.first.products
Company.find(2).products
Company.find_by_name('Acme').products.order('price DESC')
User.last.products.where(...)
и так далее ...
Наконец, мысль: вы бы очень выиграли от прочтения вводной книги по Rails. Я рекомендую ' Beginning Rails 3 '. Это быстрое чтение, вы можете проработать его на выходных, и оно даст вам полную картину того, как и ПОЧЕМУ рельсы работают так, как они работают, для вас очень ясно. Время, потраченное на чтение книги, в четыре раза увеличит вашу производительность и скорость, с которой вы будете изучать более продвинутые вещи, потому что вы начнете с прочной основы и будете решать проблемы «путями рельса».
Ваша сегодняшняя проблема - это определенно случай «вы делаете это неправильно», что не означает, что в вашей логике что-то не так, просто вы делаете простую задачу намного более сложной, пытаясь изобрести колесо заново. без необходимости. Изучение «пути рельсов» сделает вас намного более продуктивным и сделает все это намного более увлекательным.