我想知道是否可以在模型中获取当前对象?即我有一个
最喜欢的关系模型
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 被调用并返回后进入了课程所有者。也许它还没有在数据库中创建它?像一毫秒太快?收藏是异步发生的。
我需要建立更多的协会吗?