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”错误,但是,我知道这非常接近工作,就好像我使用“99”而不是 self.current_user.id 测试它一样,它将 99 添加到数据库中每个轨道的 user_id。

为什么我无法访问current_user.id的任何想法

4

1 回答 1

1

我认为您应该使用隐藏字段从表单中发送 user_id。

如果您在 Release 模型中没有 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 回答