1

当我转到 /messages?mailbox=sent 时,我得到一个“未定义的方法 `sent_messages'” 在我在 def index @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_messagesUser模型中调用任何实例级方法。

于 2013-03-27T16:28:51.273 回答