在我的消息模型中,我有读取消息的方法,我在消息控制器中使用它。但是这个方法有些问题,因为当我运行测试时我有错误:
DEPRECATION WARNING: Passing options to #find is deprecated. Please build a scope and then call #find on it. (called from readingmessage at /home/mateusz/rails4/Bloggers/app/models/message.rb:21)
这是我的方法:
def self.readingmessage(id, reader)
message = find(id, :conditions => ["sender_id = ? OR recepient_id = ?", reader, reader])
if message.read_at.nil? && (message.recepient.id==reader)
message.read_at = Time.now
message.save!
end
message
end
答案 0 :(得分:4)
您将使用where
代替:
message = where("sender_id = ? OR recepient_id = ?", reader, reader).find(id)
答案 1 :(得分:0)
尝试使用arel语法:
message = where('sender_id = ? OR recepient_id = ?', reader, reader).find(id)
值得关注: http://guides.rubyonrails.org/active_record_querying.html
答案 2 :(得分:0)
听起来像我用来构建我的消息系统的同一个教程。不要只是find
或where
(它只会检索一个活动的关系对象),请执行以下操作:
self.find(id, :conditions => ["sender_id = ? OR recepient_id = ?", reader, reader])