ruby on rails - My has_many :through association of Users, Groups, and Memberships is causing trouble in some methods -


i working has_many :through association: users join groups through membership. having trouble methods created in user model determine if user member of group, , allow user join , leave group. using console, memberships.find_by_group_id returns nil. not sure why , think might way have set has_many :through associations, though after looking on many, many times , consulting railscasts/blogs seems ok. if want me post more info, schema.db or something, let me know

class user < activerecord::base  has_many :memberships, :dependent => :destroy  has_many :groups, :through => :memberships . . .   def member?(group)     memberships.find_by_group_id(group)   end    def join!(group)     memberships.create!(:group_id => group.id)   end    def leave!(group)     memberships.find_by_group_id(group).destroy   end . . . end  class group < activerecord::base  has_many :memberships  has_many :members, :through => :memberships, :source => :user  has_attached_file :photo, :styles => { :thumb => "100x100",                                         :small => "200x200" }  attr_accessible :name, :description, :private, :created_at, :group_id  attr_accessible :photo, :photo_file_name, :photo_content_type,                  :photo_file_size,  :photo_updated_at                                   end  class membership < activerecord::base  attr_accessible :group_id   belongs_to :user  belongs_to :group end 

here membership controller:

class membershipscontroller < applicationcontroller def create   @group = group.find(params[:membership][:group_id])   current_user.join!(@group)   respond_to |format|     format.html { redirect_to @group }     format.js   end end  def destroy    @group = membership.find(params[:id]).group    current_user.leave!(@group)    respond_to |format|      format.html { redirect_to @group }      format.js    end end  def index   @memberships = membership.all end  end 

i think looking :has_and_belongs_to_many (n-n) association rather :has_many (1-n) association.

it seems each group can have many users well.

take @ official rails guides @ http://guides.rubyonrails.org/association_basics.html#has_and_belongs_to_many-association-reference

using :has_and_belongs_to_many relationships, easy add collection(user) other collection(membership) .

for example

@membership.users << current_user 

will add current_user membership

and

@membership.users.delete(current_user) 

will delete current_user membership.


Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -