2013-03-27 77 views
1

當我去/ messages?mailbox =發送時,我得到一個「未定義的方法`sent_messages'」在消息控制器中,我有def index @ user.sent_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 2013-03-27 16:26:04

+0

這兩種模式都添加了 – pwz2000 2013-03-27 16:39:11

回答

1

我想你沒有sent_messages方法User模型。在user.rb中定義以下方法。

def sent_messages 
    #Your code 
    end 

您能準確提供您想要的嗎?所以這很容易幫助,你可以得到更合適的答案。

編輯:

當我看到你沒有任何User模式叫sent_messages實例級別的方法。

+0

我在想它必須在控制器中。謝謝。現在我將着手定義模型。我有一個消息和用戶模型,所以它應該被放置在消息模型中。 – pwz2000 2013-03-27 16:40:16