Diğer birkaç ActiveRecord
sınıfında yer alacak ilişkilendirmeler ve yöntemler içeren bir Blockable
modülüne sahibim.Raylar: AR modelimde yer alan bir modülde ilişkilendirme uzantısını nasıl tanımlarım?
İlgili kod:
module Blockable
def self.included(base)
base.has_many :blocks
end
end
Ben bir dernek uzantısı eklemek istiyorum. Her zamanki sözdizimi (Bir modülde ilişki tanımlayan değilim yani) şu şekildedir: AR modeli bulunan modül kullanıldığında
# definition in Model < ActiveRecord::Base
has_many :blocks do
def method_name
... code ...
end
end
# usage
Model.first.blocks.method_name
Bu söz dizimi çalışmaz. undefined method 'method_name' for #<ActiveRecord::Relation:0xa16b714>
'u alırım.
Diğer AR sınıflarına dahil edilmek üzere bir modülde bir ilişkilendirme uzantısı tanımlamaya nasıl başlamalıyım?
Modülünüz gayet iyi görünüyor, yanlış adlandırıyormuşsunuz gibi görünüyor. 'Model.blocks' çalışmaz. Onu bir nesneye çağırıyorsun, o nesnenin bir örneği değil. Model.first.blocks.method_name 'ı deneyin. –
Özür dilerim, örnek ver bana göre. Bir örnek üzerinde aramaya çalışıyorum - bunu düzeltmek için sorumu güncelledim. – nfm