私の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
作成できないようにする方法が必要です。現在、私のセレクト ボックスは、ブラウザ コンソールなどから簡単にハッキングできます。project
people
私の目には、これを処理する最良の方法は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
ユーザーに属しているかどうかを確認するにはどうすればよいですか?
助けてくれてありがとう。