我想知道是否有可能在模型中获取当前对象?即我有一个
FavoriteRelationship模型
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应该是我试图获取的值,以便我可以在之后获得用户
感谢您的帮助和时间
@Update。
因此我基本上在用户喜欢某人课程时尝试授予“徽章”。我有..
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
什么都没有出现,不是零或任何东西。我知道我的收藏工作,它在数据库中创建了关系。我可能想到的唯一事情就是......它试图在创建关系之前授予徽章。嗯...我把print语句看起来似乎在调用create_favorite_relationship并返回后进入lesson_owner。也许它还没有在数据库中创建它?像一毫秒太快?收藏是异步发生的。
我是否需要设置更多关联?
答案 0 :(得分:2)
那么,self.lesson.inspect
会返回什么? nil
或NoMethodError
?
向我们展示您的迁移并检查数据库中的实际内容。
这可能是您的关系只是缺少课程的链接(lesson_id
为NULL)...