0
我有用戶創建的窗體。每個表單只對創作者可見。我想授予其他用戶查看特定表單的權限。有人可能會說我想將其他用戶列入白名單,以獲得特定的表單。Rails - 如何建模對象隱私設置和關聯
下面是我通過創建名爲「SharedForm」的第三個模型嘗試的。
應用程序/模型/ form.rb
Class Form < ApplicationRecord
belongs_to :user
...
end
應用程序/模型/ user.rb
Class User < ApplicationRecord
has_many :forms
has_many :forms, through: :sharedforms
...
end
應用程序/模型/ shared_form.rb
Class SharedForm < ApplicationRecord
belongs_to :user
belongs_to :form
...
end
遷移
class CreateSharedForms < ActiveRecord::Migration[5.0]
def change
create_table :shared_forms do |t|
t.integer :form_id, index: true
t.integer :user_id, index: true
t.timestamps
end
add_foreign_key :shared_forms, :users, column: :user_id
add_foreign_key :shared_forms, :forms, column: :form_id
end
end
爲了呈現與I定義的索引作爲用戶共享用戶二者的形式和形式:
應用程序/控制器/ forms_controller.rb
Class FormsController < ApplicationController
def index
@forms = Form.where(user_id: current_user.id)
shared = SharedForm.where(user_id: current_user.id)
@sharedforms = Form.where(id: shared)
end
end
這不起作用。
有沒有辦法通過user.forms和user.sharedforms分別訪問我需要的記錄?
通常你一起使用角色(Rolify)與授權庫(CanCanCan或權威人士)來處理現實世界的應用。 – max
你是老闆!這是完美的一個小調整,我不得不定義來源。 –
「has_many:forms_shared_with_me,through::shared_forms,source :: form」 –