我想添加一個屬性到模型對象。直接訪問工作,但是當我打印整個對象或將其編碼爲JSON時,該屬性被省略。有人能告訴我我做錯了什麼嗎?屬性不被添加到對象
這裏是我的鐵軌控制檯輸出:
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
編輯:
這裏是chat_messages表遷移文件。 我真的不想保存sender_nickname。所以它更像是一個虛擬屬性(但通過關聯仍然在數據庫中)。我可能需要稍後添加不在數據庫中的其他屬性。不使用關聯可以做到嗎?
def self.up
create_table :chat_messages do |t|
t.integer :room_id
t.integer :user_id
t.string :message
t.timestamps
end
end
您的ChatMessage模型最初是否具有sender_nickname作爲屬性?否則,它將無法保存'sender_nickname'屬性。 – user482594
向我們展示您的數據庫模式。 –
我不想保存它。 sender_nickname就像我不想在我的數據庫中的虛擬屬性。我只想在我渲染的JSON中使用它。 – Max