I m试图控制这种铁路协会
我有三个模式:
User
has_many: memberships
has_many: groups, :through => memberships
Membership
belongs_to: user
belongs_to group
Group
has_many: memberships
has_many: users , :through => memberships
我有预选方法,为违约用户小组增加一个新的用户。
user.rb
attr_accessor :group_ids
before_create :add_user_to_default_group
after_save :update_groups
def add_user_to_default_group
self.group_ids = [1]
end
#after_save callback to handle group_ids
def update_groups
unless group_ids.nil?
self.memberships.each do |m|
m.destroy unless group_ids.include?(m.group_id.to_s)
group_ids.delete(m.group_id.to_s)
end
group_ids.each do |g|
self.memberships.create(:group_id => g) unless g.blank?
end
reload
self.group_ids = nil
end
end
我试图写一个检验标准,以确保正确进行。
user = User.new
user.username = testuser
user.email = testuser@testdomain.co.uk
user.password = testpass
user.password_confirmation = testpass
assert user.save
assert user.errors.empty?
assert !user.memberships.empty?
如果我使用用户,那么测试便可进行。 我的印象是,我应该能够通过小组接触这些团体?
我如何检验用户是否属于称为“积极用户”的违约小组?
任何建议都将受到高度赞赏。
增 编