0

私のRailsアプリでpeopleは、多くのことを行うことができprojects、その逆も同様です。

class Person < ActiveRecord::Base

  has_and_belongs_to_many :projects

  attr_accessible :name, :person_ids

end 

class Project < ActiveRecord::Base

  has_and_belongs_to_many :people

  attr_accessible :name, :person_ids

end 

私の場合、どのユーザーも別のユーザーの に属する をProjectsController作成できないようにする方法が必要です。現在、私のセレクト ボックスは、ブラウザ コンソールなどから簡単にハッキングできます。projectpeople

私の目には、これを処理する最良の方法はbefore_filter. これは私が思いついたものです:

class ProjectsController < ApplicationController

  before_filter :valid_people, :only => [ :create, :update ]

  def create
    @project = current_user.projects.build(params[:project])
    if @project.save
      flash[:success] = "Project created."
      redirect_to edit_project_path(@project)
    else   
      render :new
    end
  end

  private

    def valid_people # not working yet
      if params[:project][:person_ids].present?
        person = current_user.people.where(:id => params[:project][:person_ids]).first
        redirect_to(root_path) unless person
      end
    end

end 

ただし、私はまだ Rails に慣れていないため、valid_peopleメソッドの構文に苦労しています。person_idsユーザーに属しているかどうかを確認するにはどうすればよいですか?

助けてくれてありがとう。

4

1 に答える 1