我的User
模型has_many
messages
我想将模型的未读消息检索为关系,以便将其链接起来
目前,唯一对我有用的是
class Message
scope :unread, lambda{ |user| where("receiver_open = false AND received_messageable_id = ?", user.id)}
然后以
的形式访问它current_user.messages.unread(current_user)
你可以看到这有点臭吗
有没有办法让范围使用我用来调用范围的current_user?这样它就是current_user.messages.unread
答案 0 :(得分:0)
因为,您已使用 current_user.messages 过滤邮件,无需再次过滤邮件。
更好地编写没有lambda的范围
scope :unread, where("receiver_open = false")
希望,这会有所帮助。
答案 1 :(得分:0)
即使您可以从模型中访问current_user
变量:
该模型不应该知道谁正在使用您的应用程序。
我认为一个简单的解决方案是仅使用收到的消息而不是所有消息,这样您就不必检查接收者的身份。 / p>
或者,调用范围unread_by
会使其更容易理解,也更不会发臭。