我正在尝试在我的作业控制器生成的视图中返回我的用户模型的属性
@accepteduser = User.find_by_id(@job.accepted).username || "no one...yet."
让我简化一下,以便您可以看到问题:
User.find_by_id(1).username
如果我在我的Rails控制台中运行它会返回“ASDF”,如果我在我的Jobs show veiw或Jobs控制器上运行它会给我这个错误:nil的未定义方法`username':当我尝试访问页面时为NilClass 。
额外信息: 我是rails的新手,所以我做了一些其他测试。我把它换成了一个不同的模型,我正在打开,它工作得很好:
Jobs.find_by_id(1).title
返回“测试作业”所以用户模型和作业模型之间的唯一区别是用户模型是由Devise gem创建的(我认为)但它仍然是< ActiveRecord::Base
那么发生了什么?我是否需要做一些特别的事情来呼叫用户,因为我正在使用设计?
请记住,我可以调用current_user.username,但效果很好。但我不想在这种情况下当前的用户我想要一个特定ID的用户。那我怎么称呼呢?
答案 0 :(得分:0)
find_by_id
方法是根据接收者类查询数据库。因此,假设标准命名,Job.find_by_id
正在查找jobs
表,而User.find_by_id
正在users
表中查找。同样,前者返回Job
的实例,后者返回User
的实例。
如果User.find_by_id(1)
在Rails控制台中返回非nil,那么它也应该在视图中返回非nil,除非所讨论的数据库不同(例如开发数据库与测试数据库)。