2014-01-27 3 views
5
인 경우

나는 보석류 워크 플로우, 페이퍼 트레일 및 Friend ID를 사용 중입니다.Friendly ID - 정의되지 않은 메소드 'slug ='가

Paper Trail을 사용하여 상태 변경 사항을 추적하기 위해 Paper Trail이 변경 내용을 캡처 할 수 있도록 persist_workflow_state를 명시 적으로 워크 플로 열을 업데이트하도록 재정의했습니다.

def persist_workflow_state(new_value) 
    update_attribute self.class.workflow_column, new_value 
end 

https://github.com/geekq/workflow#integration-with-activerecord

지금, 슬러그 열없이 친절한 ID를 도입, 나는 위의 방법에 도달 할 때의 오류가 발생합니다.

undefined method `slug=' for #<ModelName:0x007f81cf342cd8> 

도움이 필요하십니까?

답변

12

지금, 나는 당신이 여기 무슨 뜻인지 정확히 모르겠지만, 단순히, 그것은 키


없이 차를 시작하려고처럼

슬러그 열없이 친절한 ID를 도입했습니다

FriendlyID 작품은를 사용하는 방법을

을 FriendlyID 모두(또는 다른 식별자) 열은 장타율 URL을 생성하고, 장타율 ID 기반으로 찾을 : 이것은 기반으로 찾을 수있는 보석을 수 있습니다

extend FriendlyId 
friendly_id :name, use: [:slugged, :finders] 

를 중 하나 id 또는 slug 속성

당신이 만약 slug 열을 놓치면 오류가 발생할 수 있습니다. 이 문제를 해결하는 방법은 다음과 같습니다 두 번째 옵션을 시도하려는 경우

  1. attr_accessor

를 사용하여 슬러그 속성을 작성 슬러그 열

  • 를 사용하여, 당신이 시도 할 수 :

    #app/models/ModelName.rb 
    attr_accessor :slug 
    
  • +0

    이 일을하지만 우리는 DB에 슬러그 열이있는 경우 왜 내가 – ImranNaqvi

    +0

    attr_accessor해야합니다 : 는 문서에 대한 History__Avoiding_404_s_When_Slugs_Change에서보세요 –

    3

    리차드 펙은 slug 필드를 추가해야한다는 게 맞습니다.

    FriendlyID는 friendly_id_slugs 테이블에 sluggable_id 및 sluggable_type 필드가 포함되어 있기 때문에 많은 사람들이 혼란스러워합니다.

    create_table "friendly_id_slugs", force: :cascade do |t| 
    t.string "slug",      null: false 
    t.integer "sluggable_id",    null: false 
    t.string "sluggable_type", limit: 50 
    t.string "scope" 
    t.datetime "created_at" 
    t.index ["slug", "sluggable_type", "scope"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type_and_scope", unique: true 
    t.index ["slug", "sluggable_type"], name: "index_friendly_id_slugs_on_slug_and_sluggable_type" 
    t.index ["sluggable_id"], name: "index_friendly_id_slugs_on_sluggable_id" 
    t.index ["sluggable_type"], name: "index_friendly_id_slugs_on_sluggable_type" 
    end 
    

    은 기본적으로는 역사 모듈에 대한 friendly_id_slugs 테이블을 생성합니다. 문제는 슬러그 열을 가지고 있지에 대해 질문 http://norman.github.io/friendly_id/file.Guide.html#History__Avoiding_404_s_When_Slugs_Change