これらは私の協会です:
class User
has_many :products
has_many :prices
has_many :businesses
has_many :stores
end
class Price
belongs_to :store
belongs_to :user
belongs_to :product
end
class Store
belongs_to :user
belongs_to :business
has_many :prices
end
class Business
belongs_to :user
has_many :stores
end
class Product
belongs_to :user
has_many :prices
end
これらは、関連付けが正しく機能するように私が行った変更です。
すべてのモデルのテーブルに user_id があります。
上記のように、関連付けを内部に配置します。
これらの変更をCanCanアビリティに反映させました
def initialize(user) if user.role == "admin" can :manage, :all elsif user.role == "default" can :manage, [Price, Store, Business, Product], :user_id => user.id can :read, [Product, Store, Business, Price] end end
知っておくと役立つ場合は、Deviseを使用しています。
ビジネスを作成したい場合、それは可能ですが、割り当てられたユーザーではありません。私は何が問題なのか迷っています。以前のように、ユーザーが多くの価格を持っていたときのように、自動的に割り当てられると思いました。問題は何だと思いますか?
編集
class BusinessesController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
def show
@business = Business.find(params[:id])
end
def new
@business = Business.new
end
def create
@business = Business.new(params[:business])
if @business.save
redirect_to new_business_path, :notice => "Successfully added."
else
render :new, :notice => "It seems there was an error. Please try again."
end
end
end