0

以前は、トラックコントローラーのcreateメソッドを使用して、現在のユーザーIDをトラックに追加していました。

@track.user_id = current_user.id

これは正常に機能しましたが、リリースモデル内にトラックをネストし、次を使用してリリースモデルのコールバックを介して同じことを実行しようとしています。

before_save :add_user_to_tracks
before_update :add_user_to_tracks

def add_user_to_tracks
  tracks.each { |t| t.user_id = self.current_user.id}
end

未定義のメソッド`current_user'エラーが発生しますが、これは、self.current_user.idの代わりに"99 "を使用してテストするかのように機能することに非常に近いことを知っています。これにより、データベース内の各トラックのuser_idに99が追加されます。

current_user.idにアクセスできない理由

4

1 に答える 1

1

隠しフィールドを使用してフォームからuser_idを送信する必要があると思います。

リリースモデルにuser_idがない場合。仮想属性として作成できます。

class Release < ActiveRecord::Base
  attr_accessor :user_id

  before_save :add_user_to_tracks 
  before_update :add_user_to_tracks

  def add_user_to_tracks
    tracks.each { |t| t.user_id = user_id}
  end
end
于 2012-05-03T15:00:16.313 に答える