2013-03-27 4 views
1

내가/messages로 갈 때 mailbox = "message_controller"에서 "정의되지 않은 메소드`sent_messages"를 얻습니다. def user_entry_messages 아래에있는 메시지 컨트롤러에서. 그래서 그것이 정의되지 않은 이유에 대해서는 확실하지 않습니다.정의되지 않은 메소드`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 
+6

사용자 및 메시지 모델을 표시 할 수 있습니까? sent_messages는 사용자 모델에 있어야합니다. – Zippie

+0

두 모델 모두 – pwz2000

답변

1

나는 당신이 User 모델 sent_messages 방법이없는 것 같아요. user.rb에서 아래 방법을 정의하십시오.

def sent_messages 
    #Your code 
    end 

당신이 원하는 것을 정확하게 제공 할 수 있습니까? 따라서 도움이 쉽고 더 적절한 대답을 얻을 수 있습니다.

편집 :

난 당신이 User 모델에서 sent_messages라는 인스턴스 수준의 방법이없는시피.

+0

추가 컨트롤러에 있어야한다고 생각했습니다. 감사. 이제 모델을 정의 할 것입니다. 메시지와 사용자 모델이 있으므로 메시지 모델 안에 배치해야합니다. – pwz2000

관련 문제