Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 1st, 2012  |  syntax: None  |  size: 2.14 KB  |  hits: 17  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. user and group join model validation
  2. <%= form_for(@membership) do |f| %>
  3.   <% if @membership.errors.any? %>
  4.     <div id="error_explanation">
  5.       <h2><%= pluralize(@membership.errors.count, "error") %> prohibited this membership from being saved:</h2>
  6.  
  7.       <ul>
  8.       <% @membership.errors.full_messages.each do |msg| %>
  9.         <li><%= msg %></li>
  10.       <% end %>
  11.       </ul>
  12.     </div>
  13.   <% end %>
  14.  
  15.   <div class="field">
  16.     <%= f.label :group %><br />
  17.     <%= f.text_field :group %>
  18.   </div>
  19.  
  20.   <div class="actions">
  21.     <%= f.submit %>
  22.   </div>
  23. <% end %>
  24.        
  25. class Membership < ActiveRecord::Base
  26.   belongs_to :group
  27.   belongs_to :user
  28.  
  29.   attr_accessible :user_id, :group_id
  30.  
  31.   validates_uniqueness_of :group_id, :message => "can be only joined once", :scope => 'user_id'
  32.   validates_presence_of :group, :user
  33. end
  34.        
  35. class Group < ActiveRecord::Base
  36.  
  37.   has_many :memberships, :dependent => :destroy
  38.   has_many :users, :through => :subscriptions
  39.  
  40.   validates :name, :presence => true, :uniqueness => true
  41.  
  42.   attr_accessible :name, :expiry
  43. end
  44.        
  45. Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id
  46.        
  47. def create
  48.     @group = Group.find_by_name(params[:membership][:group])
  49.     @membership = current_user.memberships.build(:group_id => @group.id)
  50.  
  51.     respond_to do |format|
  52.       if @membership.save
  53.         format.html { redirect_to membership_url, :notice => 'Membership was successfully created.' }
  54.         format.json { render :json => @membership, :status => :created, :location => @membership }
  55.       else
  56.         format.html { render :action => "new" }
  57.         format.json { render :json=> @membership.errors, :status => :unprocessable_entity }
  58.       end
  59.     end
  60.   end
  61.        
  62. validate_uniqueness_of :name, :message => "a group already exists with that name"
  63. validate_presence_of :name
  64.        
  65. @membership = current_user.memberships.build(:group => @group)
  66.        
  67. def create
  68.     @groups = Group.current
  69.     @group = Group.find_by_name(params[:membership][:group])
  70.     @membership = current_user.memberships.build(:group_id => @group.id)
  71.        
  72. validates_uniqueness_of :group_id, :message => "can be only be joined once", :scope => 'user_id'