2

私のメッセージモデルには、メッセージを読み取るメソッドがあり、メッセージコントローラーで使用しています。しかし、テストを実行するとエラーが発生するため、この方法では何かが摩耗しています。

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
4

3 に答える 3

4

where代わりに次を使用します。

message = where("sender_id = ? OR recepient_id = ?", reader, reader).find(id)
于 2013-08-20T14:44:28.830 に答える
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 に答える