Этот вопрос почти отвечает на него, но я все еще думаю, что это излишне.
Проблема с Rails отношениями has_many
Я действительно просто хочу выполнять задания, подобные этому
@user.browsing_location = location1
@user.home_location = location2
Я много гуглял, и вся информация противоречива, или объясняет настройку многих-многих отношений, и объясняет методы с использованием промежуточной таблицы. Но на самом деле все, что нужно базе данных, - это чтобы в пользовательской таблице было два поля идентификаторов с разными именами. Будет ли что-то вроде следующей работы?
Класс пользователя
class User < ActiveRecord::Base
#locations created by this user
has_many :locations, :foreign_key => :creator_id
#locations for browsing and visiting
belongs_to :browsing_location, :source => :location
belongs_to :home_location, :source => :location
end
Класс местоположения
class Location < ActiveRecord::Base
#Users who are just browsing this location now
has_many :browsing_users, :foreign_key => :browsing_location_id, :source => :users
#Users who are living here now
has_many :home_users, :foreign_key => :home_location_id, :source => :users
#User who created this location
has_one :user
end
Довольно многим моим моделям понадобятся такие отношения, поэтому я хотел бы избежать создания дополнительных таблиц для этого.