2015-01-12 2 views
0

저는 레일을 처음 사용합니다. 사용자 역할 추가에 rolify gem을 사용하고 있습니다. 레일 콘솔에서 역할을 추가하려고 할 때이 문제가 발생합니다. 이 문제에 직면 한 사람이 있습니까?ActiveRecord :: RecordInvalid : 유효성 검사에 실패했습니다. 리소스 유형이 lis에 포함되어 있지 않습니다.

u = User.first 
u.add_role(:admin).save! 

내가로부터 rolify 설치 설명서를 따랐다

ActiveRecord::RecordInvalid: Validation failed: Resource type is not included in the list. 

Rolify 마이그레이션 파일 ============

class RolifyCreateRoles < ActiveRecord::Migration 
def change 
create_table(:roles) do |t| 
t.string :name 
t.references :resource, :polymorphic => true 
t.timestamps 
end 

create_table(:users_roles, :id => false) do |t| 
    t.references :user 
    t.references :role 
end 

add_index(:roles, :name) 
add_index(:roles, [ :name, :resource_type, :resource_id ]) 
add_index(:users_roles, [ :user_id, :role_id ]) 

end 
end` 

오류 목록 === 여기에 == https://github.com/RolifyCommunity/rolify

+0

언제든지 레일스 콘솔을 시작한 후 rake db : migration을 실행 했습니까? – Sanjiv

+0

감사합니다. 하지만 난 아니야 – Sazzad

+0

여기에서 모델을 지난 수 있습니까? – Sanjiv

답변

0

버전 3.5에서는 이전 버전에서 글로벌 역할을 만들 수없는 것으로 보입니다. 실제로는 역할이 생성 될 때마다 resource_type이 필요합니다. 현재 자원을 가지고 있지 않은 전역 역할과 그 오류를 생성하고 있기 때문입니다. 하지만 인스턴스에서 역할을 만들면 제대로 작동합니다. 내가 역할을 만들 때, 그것은 '포스트'로 RESOURCE_TYPE을 얻을 것이다, 내가 scenerios 위에서 주어진 것처럼 당신이

Class Post 
    resourcify 
end 
On Rails console, create 
user = User.first 
user.add_role(:admin, Post.first) 

로 '포스트'라는 이름의 몇 가지 모델을 가지고 생각해 보자. 그러나 귀하의 경우, 역할은 resource_type을 얻지 못합니다. 따라서 전역 역할을 만들고 싶다면 '역할'모델에서 '유효성 검사 : resource_type, : inclusion => {: in => Rolify.resource_types}'을 제거하는 것이 좋습니다.

0

버전 3.5 이상은 이러한 문제가 있습니다. 3.4. 나는 고정시키고 요청을 보낸다.

+0

나는 그것을 시도했다. 그러나이 문제를 만들고 있습니다. 잡히지 않은 예외 : 롤귀 : 모듈에 대한 정의되지 않은 메소드'resource_types '.이것이 생성되는 행입니다. === 유효성 검사 : resource_type, : inclusion => {: in => Rolify.resource_types} – Sazzad

0

@Sazzad 역할 모델을 변경하십시오. 아래 주어진대로 :

class Role < ActiveRecord::Base 
    has_and_belongs_to_many :users, :join_table => :users_roles belongs_to :resource, :polymorphic => true 

    scopify 
end