9

私は gems Workflow、Paper Trail、Friend ID を使用しています。

Paper Trail を使用して状態の変化を追跡するために、persist_workflow_state をオーバーライドしてワークフロー列を明示的に更新し、Paper Trail が変更をキャプチャできるようにしました。

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

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

さて、slug 列のない Friendly ID を導入しましたが、上記の方法に到達するとエラーが発生します。

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

何か助けはありますか?

4

3 に答える 3

16

これで、slug 列のない Friendly ID を導入しました

ここで何を言っているのか正確にはわかりませんが、簡単に言えば、キーなしで車を始動しようとするようなものです


フレンドリーID

FriendlyIDが機能する方法は、slug(または他の識別子) 列を使用して、スラッグされた URL を作成し、スラッグされた ID に基づいて検索することです。

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

これにより、gem はidまたはslug属性に基づいて検索できます。

列を見逃すslugと、これが機能しなくなり、エラーが発生します。これを修正する方法は次のとおりです。

  1. スラグカラムを使用する
  2. を使用してスラッグ属性を作成しますattr_accessor

2 番目のオプションを試してみたい場合は、次の方法を試してください。

#app/models/ModelName.rb
attr_accessor :slug
于 2014-01-28T10:01:51.073 に答える