1

我想知道是否可以在模型中获取当前对象?即我有一个

最喜欢的关系模型

belongs_to :user
belongs_to :lesson

我的课程模型是

has_many :favorite_relationships
has_many :users, :through => :favorite_relationships

我也与我的用户模型有关联(不重要)

我一直在尝试在我的 FavoriteRelationship 中执行该方法

def lesson_owner
    self.lesson.user
end

在 FavoriteRelationship 中检索属于该课程的用户,但它似乎不起作用。它什么也不返回,即使我这样做了

self.lesson.inspect

即使是在 FavoriteRelationship 模型中检索的课程也不起作用。有人可以阐明如何做到这一点吗?

我本质上想要与 FavoriteRelationship 模型相关的课程。在我的 FavoriteRelationship 表中,我有属性,

:id, :user_id, :lesson_id.

并且 :lesson_id 应该是我试图获取的值,所以我可以在之后获得用户

感谢您的帮助和时间

@更新。

所以当用户喜欢别人的课程时,我基本上会尝试授予“徽章”。我有..

def create
    @lesson = Lesson.find(params[:favorite_relationship][:lesson_id])
    puts 'before favorite'
    current_user.favorite!(@lesson) 
    puts 'after favorite'
    @favorite_relationship = @lesson.user    
    respond_to do |format|
      format.html { redirect_to @lesson }
      format.js
    end
end

我的徽章授予来自...

    grant_on 'favorite_relationships#create', :badge => 'got-favorited',
         :to => :lesson_owner

它接受一个返回我授予谁的方法,这就是我创建该方法的原因。

当我做

puts self.lesson.inspect

什么都没有出现,没有 nil 或任何东西。我知道我最喜欢的作品,它在数据库中创建了关系。我唯一能想到的事情是……它试图在建立关系之前授予徽章。嗯...我放了打印语句,它似乎在 create_favorite_relationship 被调用并返回后进入了课程所有者。也许它还没有在数据库中创建它?像一毫秒太快?收藏是异步发生的。

我需要建立更多的协会吗?

4

1 回答 1

2

那么,这会self.lesson.inspect返回什么?nil还是NoMethodError?向我们展示您的迁移并检查数据库中的实际内容。这可能是您的关系只是缺少课程的链接(lesson_id为 NULL)...

于 2012-05-25T08:50:57.627 回答