0
在Rails 4中,我有一個消息模型,其關係爲user
和template
。它也有它自己的屬性,text
。Rails 4 model屬性不可設置
class Message < ActiveRecord::Base
attr_accessor :text
belongs_to :user
belongs_to :template
validates :user, presence: true
validates :template, presence: true
validates :text, presence: true, if: lambda { |message| message.template.present? }
def initialize(args = {})
super
@user = args[:user]
@template = args[:template]
@text = args[:text] || (args[:template].text if args[:template].present?)
end
end
這裏是我的問題: (假設我有一個user
和template
已經) 當我運行message = Message.create!(user: user, template: template, "hello world")
message.text
將等於"hello world"
,但是當我從中檢索自己的數據庫這個紀錄,這是text
屬性爲nil
,並且所有其他屬性都可以。
什麼給?爲什麼text
不被保存到數據庫?
爲什麼使用attr_accessor:text?這樣你就可以「覆蓋」ActiveRecord文本屬性及其所有行爲,這可能就是爲什麼它沒有寫入數據庫。另外要小心,文本可能是一個保留字(db type'text') –