![](/img/trans.png)
[英]ActiveRecord::AssociationTypeMismatch - Ruby on Rails
[英]Rails handling ActiveRecord::AssociationTypeMismatch as exception
我有以下代碼:
def set_tags_from_string
list = self.tags_string.split(/ /)
list.each do |tag|
begin
self.partner_tags << PartnerTag.find_by(name: tag)
rescue
self.partner_tags << PartnerTag.create(name: tag)
end
end
end
當我嘗試將PartnerTag
放入self.partner_tags
且該標記尚不存在時,就會出現問題。 控制台顯示以下內容:
ActiveRecord::AssociationTypeMismatch: PartnerTag(#28272720) expected, got NilClass(#8501040)
我希望能夠將其作為異常處理,但它仍然會給出錯誤。 之前我從未在Ruby中進行過異常處理,所以我認為自己可能遺漏了一些東西,但是我遵循了本教程,但看不到遺失的東西。 Rails API說,實際上這是一個異常,最終從StandardError
繼承。 Ruby文檔說,救援子句應處理所有StandardError
,所以我不知道我在做什么錯。
嘗試以下方法:
self.partner_tags << PartnerTag.find_by(name: tag) || PartnerTag.create(name)
另外,如果您在Rails 4上,則可以執行以下操作:
self.partners_tags << PartnerTag.find_or_create_by(tag: name)
但是請注意,除非您在數據庫中具有唯一約束,否則它不會阻止您以兩個相同的標簽結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.