'u kullanarak etiketlenebilir olarak etkin etiketler için JSON'u silme hatası Bir Ruby 2/Rails 4 uygulamasında, bir JSON oluşturmak için active_model_serializers ile birlikte acts-as-etiketlenebilir eylemleri kullanmaya çalışıyorum Etiketleri diğer model parametreleriyle birlikte gönderen API.Active-model-serializers
İlk olarak bu sorun için bazı arka plan/motivasyon: JSON, bu yazının yazıldığı sırada JSON'daki katıştırılmış kayıtlar için desteği kaldırdığı ember/ember-data ile besleniyor. Bu konuda bir documentation düzeltmesi var, ama hantal buluyorum ve aslında işe yaramadı. Ben bir Ember acemi olduğumdan ve Rails ile biraz daha rahat olduğumdan, sorunu başka bir şekilde çözmeye çalışacağım, bu da belge kaydının yanında etiket kaydını kaldırarak. Bu çözümü daha çok beğendim çünkü bu benim uygulamam için daha anlamlı geliyor, ancak bunu da işe yaratamıyorum.
İşte bir örnek: ı kullanan bir belge modeli var diyelim eylemler-olarak-taggable-on: Bir etiketiyle bir belge ile veritabanını kurdum
class Document < ActiveRecord::Base
acts_as_taggable
# other code omitted
. Şimdi aşağıdaki durumlarda göz önünde:
1. Tam Nesne yerleştir: Aşağıdaki serileştiriciye olarak:
class DocumentSerializer < ActiveModel::Serializer
attributes :id
has_many :tags
Benim JSON (Raylar 4 UUIDs kullanarak) aşağıdaki biçimdedir:
{
"documents": [
{
"id": "c41460fa-2427-11e3-8702-0800270f33f4",
"tags": [
{
"id": "a33fc396-2428-11e3-8eeb-0800270f33f4",
"name": "test"
}
]
}
]
}
2. Kimlik Embed: Serileştiriciyi kullanma
Benim JSON şimdi benziyor:
{
"documents": [
{
"id": "c41460fa-2427-11e3-8702-0800270f33f4",
"tag_ids": [
"a33fc396-2428-11e3-8eeb-0800270f33f4"
]
}
]
}
Etiketler sideloaded 3. Kimlik Ekle: active_model_serializers belgelerine göre, ben
class DocumentSerializer < ActiveModel::Serializer
attributes :id
has_many :tags, embed: :id, include: true
yapmak mümkün olmalıdır ama bu çalışmıyor . Bu sorun için arama denedim ama şimdiye kadar yararlı bir şey bulamadı
undefined method `object' for #<ActsAsTaggableOn::Tag:0x007f258cf1db38>
: Bunun yerine, bir NoMethodError olsun. Ayrıca diğer gem ile kullanım ile ilgili herhangi bir gemide herhangi bir belge bulamadık. Şüphelerim şu anda, etiketleme gibi davranmanın nasıl uygulandığıyla ilgili bir şey olduğunu, bunun basit bir has_many ilişkisi olmadığını mı? Bu konuda bazı bilgiler sunabiliyor mu? Şimdiden teşekkürler!
ben köz ile ilişkileri nasıl işleneceğini sorabilir miyim? Dokümana nasıl etiket ekleyebilirsin? CreateRecord? –