특성을 모델 개체에 추가하려고합니다. 직접 액세스가 작동하지만 전체 객체를 인쇄하거나 JSON으로 인코딩 할 때 해당 속성은 제외됩니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?개체에 특성이 추가되지 않음
이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 테이블에 대한 마이그레이션 파일
이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>
여기 내 모델 코드 :
여기 내 레일 콘솔 출력됩니다. sender_nickname을 (를) 저장하려고하지 않습니다. 그래서 그것은 가상 속성과 비슷합니다 (그러나 여전히 연관성을 통해 DB에 있습니다). 나중에 DB에없는 다른 속성을 추가해야 할 수도 있습니다. 연결을 사용하지 않고도 가능합니까?
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
은 db 스키마를 보여줍니다. –
저장하지 않으려 고합니다. sender_nickname은 내 데이터베이스에서 원하지 않는 가상 속성과 같습니다. JSON에서 렌더링 만 원한다. – Max