Мне нужно разработать систему отслеживания членства пользователей в группах с различными ролями (в настоящее время три).has_many: через значения по умолчанию
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
class Role < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :role
belongs_to :group
end
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
end
В идеале я хочу, чтобы просто установить
@group.users << @user
и иметь членство имеют правильную роль. Я могу использовать: условия для выбора данных, вручную вставленные как таковой:
:conditions => ["memberships.role_id= ? ", Grouprole.find_by_name('user')]
Но при создании членства в группе role_id не создаются.
Есть ли способ сделать это, поскольку в настоящее время у меня есть несколько повторяющийся фрагмент кода для каждой роли пользователя в моей модели группы.
ОБНОВЛЕНО
Следует отметить, что идентификатор идеально походит, чтобы достичь нечто похожее на
@group.admins << @user
@group.moderators << @user
это создало бы членство в группе и установить роль членства (ROLE_ID) соответствующим образом.
Что такое Grouprole? –
Извините, что я немного изменил свой код для публикации, я обновил опубликованные фрагменты. –
не должны иметь пользователей 'has_many: role,: through =>: memberships'? – SztupY