***Note if you have a similar setup and would share - email me @ 
alloffices....@gmail.com***


I'm still fairly new to RoR and am having a bit of trouble understanding 
how to setup the contributions controller and the form in the view.


*Objective:*1. user1 creates post - which belongs to user1 
2. user2 click request button to join the user1_post as a contributor ( @ 
post_show page )

3. user1 clicks accepts or declines request button ( @ post_show page 
link_to contribution_requests ( true : false ) )
4. user2 is now a contributor to user1_post ( @ post_show list contributors 
)
5. user1 can remove user2 as a contributor ( @ post_show page link_to 
contribution_requests ( true : false ) )

Got the has_many :through setup properly and have tested it in the console

*contribution.rb*

class Contribution < ActiveRecord::Base
  belongs_to :post
  belongs_to :user

  def accept
    self.accepted = true
  endend

*post.rb*

class Post < ActiveRecord::Base
  belongs_to :author, class_name: 'User'
  has_many :contribution_requests, -> { where(accepted: false) }, class_name: 
'Contribution'
  has_many :contributions, -> { where(accepted: true) }
  has_many :contributors, through: :contributions, source: :userend

*user.rb*

class User < ActiveRecord::Base
  has_many :posts, foreign_key: 'author_id'
  has_many :contribution_requests, -> { where(accepted: false) }, class_name: 
'Contribution'
  has_many :contributions, -> { where(accepted: true) }
  has_many :contributed_posts, through: :contributions, source: :postend

*contributions_controller.rb*


#config/routes.rb
resources :posts do
   resources :contributions, only: [:create, :destroy] #-> can use posts#edit 
to add extra contributionsend
#app/controllers/contributions_controller.rbclass ContributionsController < 
ApplicationController
   def create
      @post = Post.find params[:post_id]
      @contribution = current_user.contributions.new contribution_params
      @contribution.post = @post

      notice = @contribution.save ? "Added Contributor" : "Unable to add 
contributor"
      redirect_to @post, notice: notice
   end

   def destroy
      @contribution = current_user.contributions.find params[:id]
      @contribution.destroy

      redirect_to root_url, notice: "Removed Contributor"end

   private

   def contribution_params 
      params.require(:contribution).permit(:user, :post, :accepted)
   endend




-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/0355492f-1bd6-4b23-863f-749db150d13c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to