Я пытаюсь добавить атрибут к объекту модели.Прямой доступ работает, но когда я печатаю весь объект или кодирую его в JSON, этот атрибут опускается.Может кто-нибудь сказать мне, что я делаю не так?
Вот мой вывод консоли rails:
irb(main):010:0> b=ChatMessage.new(:user_id=>4,:room_id=>1,:message=>"Hello World")
=> #<ChatMessage id: nil, room_id: 1, user_id: 4, message: "Hello World", created_at: nil, updated_at: nil>
irb(main):011:0> b.sender_nickname="bbb"
=> "bbb"
irb(main):012:0> b.sender_nickname
=> "bbb"
irb(main):013:0> b
=> #<ChatMessage id: nil, room_id: 1, user_id: 4, message: "Hello World", created_at: nil, updated_at: nil>
Вот мой код модели:
class ChatMessage < ActiveRecord::Base
attr_accessor :sender_nickname
def self.get_last_message_id
last_message=ChatMessage.all.last
last_message.nil? ? 0 : last_message.id
end
def self.get_all_messages_after(room_id,message_id)
ChatMessage.where("room_id = ? AND id > ?",room_id,message_id)
end
end
edit:
Вот файл миграции для таблицы chat_messages.Я не очень хочу сохранить имя отправителя.Так что это больше похоже на виртуальный атрибут (но все еще находится в базе данных через ассоциацию).И мне может понадобиться добавить другие атрибуты позже, которых нет в БД.Возможно ли это сделать без использования ассоциации?
def self.up
create_table :chat_messages do |t|
t.integer :room_id
t.integer :user_id
t.string :message
t.timestamps
end
end