我之前通过轨道控制器的创建方法使用:
将我当前的用户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 db中每个轨道的user_id。
我无法访问 current_user.id
的任何想法答案 0 :(得分: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