2012-03-06 82 views
1

擁有屬於用戶,用戶的特定角色或多個角色相關聯的發票模型,以及用戶表:Rails - 單用戶多個「角色?」

class CreateInvoices < ActiveRecord::Migration 
def self.up 
create_table :invoices do |t| 
    t.string :po_number 
    t.datetime :invoice_date 
    t.datetime :date_received 
    t.datetime :date_approved 
    t.text :clerk_note 
    t.integer :clerk_id 
    t.integer :approver_id 
    t.text :approver_note 
end 
end 

class Invoice < ActiveRecord::Base 
    belongs_to :user 
end 

class CreateUsers < ActiveRecord::Migration 
    def self.up 
    create_table :users do |t| 
     t.string :first_name 
     t.string :last_name 
     t.string :username 
     t.string :email 
     t.boolean :account_clerk 
     t.boolean :approver 
     t.boolean :admin 
    end 
    end 

class User < ActiveRecord::Base 
    has_many :invoices 
end 

在發票記錄,我怎麼分配clerk_id和approver_id取決於在用戶模型中設置角色?每張發票都有一名職員和批准人,但都是用戶。

同樣,我該如何將clerk_note分配給clerk_id,將approver_note分配給approver_id?我假設在這種情況下,我只能引用current_user,因爲登錄的用戶將是製作註釋的用戶,對吧?

我不確定這是叫什麼,所以在我的谷歌搜索中,我不知道該找什麼......先謝謝你的幫助。

+0

你可能真的想從發票表拆分店員和審批列,創建具有下列的invoice_users表:INVOICE_ID,USER_ID,注意,角色。不確定同一用戶是否可以成爲系統中的審批者和職員。 – 2012-03-06 18:34:09

+0

謝謝你的想法 - 是的,用戶可以是或者是批准者/職員。我可以用這種方法......謝謝。 – 2012-03-06 19:07:49

回答

0

要使用您當前的模型回答您的原始問題,您可以創建視圖以基於用戶的角色顯示不同的字段(假定登錄用戶位於名爲@user的實例變量中)。

<% if (@user.approver) then %> 
    <%= f.text_area :approver_note %> 
<% else %> 
    <%= f.text_area :clerk_note %> 
<% end %> 

然後在您的控制器中,您可以根據登錄的用戶再次設置職員ID或審批者ID的值。

if (@user.approver) then 
    @invoice.approver_id = @user.id 
else 
    @invoice.clerk_id = @user.id 
end 
+0

謝謝,我會試試看。 – 2012-03-06 19:08:19

相關問題