У меня есть следующие отношения многие ко многим:
class Assignment < ActiveRecord::Base
belongs_to :programmer
belongs_to :project
end
class Programmer < ActiveRecord::Base
has_many :assignments
has_many :projects, :through => :assignments
end
class Project < ActiveRecord::Base
has_many :assignments
has_many :programmers, :through => :assignments
end
И в моем db: migrate у меня есть следующее:
class CreateAssignments < ActiveRecord::Migration
def self.up
create_table :assignments do |t|
t.integer :programmer_id
t.integer :project_id
t.boolean :owner, :default => false
t.timestamps
end
end
def self.down
drop_table :assignments
end
end
Это означает, что я могу загрузить проект, принадлежащий программисту, выполнив следующее:
@my_programmer.projects.find params[:id]
Но если вы видите мою миграцию, у каждого назначения также есть флаг "владелец", который указывает, является ли программист владельцем этого проекта. Моя проблема в том, что этот запрос даст мне только проект, а не доступ к флагу «владелец».
Так как мне узнать, является ли программист владельцем? Я мог бы сделать еще один вызов, чтобы получить сотрудничество, но это кажется глупым, поскольку он уже выполняет JOIN на назначениях?
Есть ли способ получить свойства класса: through без необходимости выполнения определенного вызова базы данных?