2013-12-14 4 views
1

rolify + activeadmin gem을 사용합니다. 2 개의 리소스가 있습니다 : 직원 및 사용자 (기본 작성 테이블). 직원은 읽기 전용 테이블을 매핑하는 모델이므로 직원 테이블에 쓸 수 없습니다. 내가 has_one 및 belongs_to 협회 사용하여 사용자에 대한 역할을 추가 활성 관리자와 함께 노력하고 :rolify + activeAdmin 형태로 역할 추가

form do |f| 
     f.inputs "Add role" do |staff| 
     f.input :roles, :as => :select,  :collection => Role.global 
     end 
     f.actions 
    end 

So i want to add a role for a user using Staff admin resource. 
when i click on submit form button i have this error: 
NoMethodError in Admin/staffs#edit 

Showing app/views/active_admin/resource/edit.html.arb where line #1 raised: 

undefined method `roles' for #<Staff:0x00000005c6af70> 
Extracted source (around line #1): 

1: insert_tag renderer_for(:edit) 

답변

2

역할 : 응용 프로그램/관리/staff.rb 클래스의

class User < ActiveRecord::Base 
    rolify 
    belongs_to :staff 
end 

class Staff < ActiveRecord::Base 
    has_one :user 
end 

을 나는이 있습니다 직원 모델이 아닌 사용자 모델의 일부입니다. 대신 app/admin/user.rb에 양식을 추가하면 사용자에게 역할을 할당 할 수 있습니다. 또한 사용자 양식에서 직원 레코드를 지정할 수 있습니다. 다음은 예제 양식입니다.

# app/admin/user.rb 
form do |f| 
    f.inputs 'Name' do 
    f.input :name 
    end 

    f.inputs 'Add role' 
    f.input :roles, :as => :select, :collection => Role.global 
    end 

    f.inputs 'Staff' do 
    f.input :staff 
    end 

    f.actions 
end 

대리인을 직원에게 추가하여 직원 모델에서 역할을 기본적으로 읽을 수 있습니다.

# app/models/staff.rb 
class Staff < ActiveRecord::Base 
    attr_accessible :name, :user_id 
    has_one :user 
    delegate :roles, :to => :user 
end