0
所以我在其中一個模型中創建了一個用於解析文本主體中的主題標籤的方法。這裏是模型:在ruby模型上出錯:「除非保存父項,否則不能調用create」
class Conversation < ActiveRecord::Base
has_many :comments
has_many :hashtags, as: :hashtaggable, autosave: true
belongs_to :user
attr_accessible :description, :title, :user_id
before_save :create_hashtags
private
def create_hashtags
if self.description_changed? || self.hashtags.empty?
##scan for new hashtags
scanned_tags = self.description.scan(/#\w+/)
##delete old hashtag
self.hashtags.destroy_all unless self.hashtags.empty?
##save the new hashtag
scanned_tags.each do |hashtag|
self.hashtags.create name: hashtag
end unless scanned_tags.empty?
end
end
validates :description, presence: true, length: { in: 5..400 }
validates :title, presence: true, length: {in: 20..250}
validates :user, presence: true
end
這工作得很好,如果我更新一個已經存在的「對話」,但如果我嘗試創建一個新的,我得到這個錯誤:
ActiveRecord::RecordNotSaved at /conversations
You cannot call create unless the parent is saved
是有什麼我在我的模型中失蹤?我已經嘗試了一切。
我簡直不敢相信那麼簡單。謝謝! –
如果你有時間,你會介意解釋爲什麼是這樣嗎?我總共n00b。 –
謝謝!事後看來是完美的。 – Phix