2

In my message model I have method to read a message, I use it in Message Controller. But something's worng with this method because when i run the tests i have error:

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)

This is my method:

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
4

3 回答 3

4

您将where改为使用:

message = where("sender_id = ? OR recepient_id = ?", reader, reader).find(id)
于 2013-08-20T14:44:28.830 回答
0

听起来就像我用来构建消息传递系统的教程一样。而不是仅仅findor where(它只会检索一个活动的关系对象),做:

self.find(id, :conditions => ["sender_id = ? OR recepient_id = ?", reader, reader])
于 2014-02-27T01:59:55.417 回答
0

尝试 arel 语法:

message = where('sender_id = ? OR recepient_id = ?', reader, reader).find(id)

值得一看: http: //guides.rubyonrails.org/active_record_querying.html

于 2013-08-20T14:45:26.693 回答