Я использую has_many :through
, чтобы указать связь «многие ко многим» между двумя сущностями, и я хочу иметь возможность легко извлекать модель из таблицы соединений. Вот основные объекты:
class Group < ActiveRecord::Base
has_many :memberships
has_many :members, :through => :memberships
end
class Member < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
Таблица объединения называется «членство» и имеет дополнительный атрибут «администратор», который указывает, что пользователь может выступать в качестве администратора группы для этой группы. Вот фрагмент миграции:
create_table :memberships do |t|
t.integer :group_id
t.integer :member_id
t.boolean :admin
t.timestamps
end
Теперь в моем контроллере я хочу проверить, является ли конкретный участник администратором группы. В настоящее время у меня есть следующий код (который работает):
membership = @member.memberships.find_by_group_id(@group.id)
Мой вопрос: существует ли более элегантный способ получения объекта соединения (членства), чем использование помощника find_by_group_id
?