1

/messages?mailbox=sent に移動すると、"undefined method `sent_messages'" が表示されます。メッセージ コントローラーでは、定義インデックス @user.sent_messages の下にあります。したがって、なぜ未定義なのかはわかりません。

メッセージ モデル:

attr_accessible :subject, :body, :sender_id, :recepient_id, :read_at,:sender_deleted,:recepient_deleted
validates_presence_of :subject, :message => "Please enter message title"

belongs_to :sender,
:class_name => 'User',
:foreign_key => 'sender_id'
belongs_to :recepient,
:class_name => 'User',
:foreign_key => 'recepient_id'

# marks a message as deleted by either the sender or the recepient, which ever the user that was passed is.
# When both sender and recepient marks it deleted, it is destroyed.
def mark_message_deleted(id,user_id)
    self.sender_deleted = true if self.sender_id == user_id and self.id=id
    self.recepient_deleted = true if self.recepient_id == user_id and self.id=id
    self.sender_deleted && self.recepient_deleted ? self.destroy : save!
end

# Read message and if it is read by recepient then mark it is read
def self.readingmessage(id, reader)
    message = find(id, :conditions => ["sender_id = ? OR recepient_id = ?", reader, reader])
    if message.read_at.nil? && (message.recepient.user_id==reader)
        message.read_at = Time.now
        message.save!
    end
    message
end

# Based on if a message has been read by it's recepient returns true or false.
def read?
    self.read_at.nil? ? false : true
end

ユーザーモデル:

 def unread_messages?
   unread_message_count > 0 ? true : false
 end

 # Returns the number of unread messages for this user
 def unread_message_count
   eval 'messages.count(:conditions => ["recepient_id = ? AND read_at IS NULL", self.user_id])'
 end

  def to_s; username
  end

  def has_role?(role_name)
    role.present? && role.to_sym == role_name.to_sym
  end

  def send_password_reset
    generate_token(:password_reset_token)
    self.password_reset_sent_at = Time.zone.now
    save!
    UserMailer.password_reset(self).deliver
  end

  def generate_token(column)
    begin
      self[column] = SecureRandom.urlsafe_base64
    end while User.exists?(column => self[column])
  end
end
4

1 に答える 1

1

モデルにsent_messagesメソッドがないと思います。Userで以下のメソッドを定義しますuser.rb

  def sent_messages
    #Your code
  end

あなたが探しているものを正確に提供できますか?そのため、助けやすく、より適切な回答を得ることができます。

編集:

sent_messagesご覧のとおり、Userモデルで呼び出されるインスタンス レベルのメソッドはありません。

于 2013-03-27T16:28:51.273 に答える