Sha256: 6a6e7cc442b1230e3a67a19c1ffe28742aa1f07fffce7313c49ebc816e0933b2
Contents?: true
Size: 1.86 KB
Versions: 1
Compression:
Stored size: 1.86 KB
Contents
module Saucy module Project extend ActiveSupport::Concern included do belongs_to :account has_many :permissions, :dependent => :destroy has_many :users, :through => :permissions validates_presence_of :account_id, :url, :name validates_uniqueness_of :url, :scope => :account_id validates_format_of :url, :with => %r{^[a-z0-9]+$}, :message => "must be only lower case letters." after_create :assign_default_memberships after_save :update_memberships # We have to define this here instead of mixing it in, # because ActiveRecord does the same def user_ids=(new_user_ids) @new_user_ids = new_user_ids.reject { |user_id| user_id.blank? } end end module ClassMethods def visible_to(user) where(['projects.id IN(?)', user.project_ids]) end def by_name order("projects.name") end end module InstanceMethods def to_param url end def has_member?(user) permissions. joins(:membership). exists?(:memberships => { :user_id => user.id }) end private def assign_default_memberships account.memberships.where(:admin => true).each do |membership| self.permissions.create(:membership => membership) end end def update_memberships if @new_user_ids removed_user_ids = self.user_ids - @new_user_ids added_user_ids = @new_user_ids - self.user_ids permissions.where(:user_id => removed_user_ids).destroy_all added_user_ids.each do |added_user_id| membership = account.memberships.where(:user_id => added_user_id).first permissions.create!(:membership => membership) end end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
saucy-0.1.11 | lib/saucy/project.rb |