2012-11-23 18 views
7

मैं globalize3 के साथ rails_admin का उपयोग कर रहा हूं और खोजने योग्य संघों को काम करने के लिए नहीं मिल सकता। ,rails_admin खोज योग्य एसोसिएशन

class Person < ActiveRecord::Base 
    has_one :name, inverse_of: :person 
end 

class Name < ActiveRecord::Base 
    belongs_to :person, inverse_of: :name 
    translates :first_name, :last_name 
    has_many :name_translations, inverse_of: :name, dependent: :destroy 
end 

class NameTranslation < ActiveRecord::Base 
    belongs_to :name, inverse_of: :name_translations  
end 

NameTranslation मॉडल globalize3 से आ रही है, यह नाम (first_name और last_name) प्लस locale और name_id के रूप में ही विशेषताएं हैं: यहाँ मॉडल हैं (व्यक्ति has_one/belongs_to नाम has_many/NameTranslation belongs_to)।

config/initializers/rails_admin.rb में मैं

config.model Person do 
    list do 
    field :name do 
     searchable name_translations: :last_name 
    end 
    end 
end 

तब है, जीयूआई में, जब मैं name पर एक फिल्टर जोड़ने के लिए, मैं:

SQLite3::SQLException: no such column: name_translations.last_name: SELECT "people".* FROM "people" WHERE (((name_translations.last_name LIKE '%freud%'))) ORDER BY people.id desc LIMIT 20 OFFSET 0 

जाहिर है, rails_admin में name_translations.last_name नाम के एक स्तंभ के लिए लग रही है peoplenames और name_translations सहित शामिल होने के बजाय - क्यों?

मैं rails_admin क्या जरूरत है ऐसा करने के लिए आईआरबी में काम कर रहा है,:

>> Person.joins(name: :name_translations).where('name_translations.last_name like "test"') 

जो निम्नलिखित एसक्यूएल उत्पन्न करता है:

SELECT "people".* FROM "people" INNER JOIN "names" ON "names"."person_id" = "people"."id" INNER JOIN "name_translations" ON "name_translations"."name_id" = "names"."id" WHERE (name_translations.last_name like "test") 

इस rails_admin में किया जा सकता है? आपकी मदद के लिए धन्यवाद ...

+0

क्या आपको कभी यह पता चला है? मुझे पता है कि यह थोड़ी देर हो गया है। – GreenPlastik

+0

नहीं, मैंने नहीं किया, क्षमा करें ... – sebastian

उत्तर

1

this thread से, मैं निक रूजवेल्ट के सुझाव का पालन किया है और यह मेरे मामले

class Room < ActiveRecord:Base 
    has_many :time_slots 
end 

class TimeSlot < ActiveRecord::Base 
    belongs_to :room 

    rails_admin do 
    list do 
     field :day do 
     searchable true 
     end 
     # field :room do 
     # searchable room: :name 
     # end 
     field :room do 
     searchable [{Room => :name}] 
     queryable true 
     end 
    end 
    end 
end 

मैं searchable room: :name की कोशिश की के लिए काम किया है और यह काम नहीं कर रहा था, लेकिन searchable [{Room => :name}] यह काम कर रहे हैं।

2

मुझे has one रिश्ते के साथ एक ही समस्या थी। जिस तरह से मैंने इसे हल किया था, उसे मॉडल पर default_scope सेट करना था और संबंधित तालिका के साथ इसमें शामिल होना था (यह एकमात्र तरीका है जिसे मैं इन दो तालिकाओं में शामिल होने के लिए रेल व्यवस्थापक प्राप्त कर सकता हूं)।

मुझे संबंधित क्षेत्र पर queryable true भी सेट करना पड़ा।

कल्पना कीजिए कि आप केवल नाम संघ के अंदर खोज करने के लिए किया था, तो यहाँ यह कैसे काम करेगा:

class Person < ActiveRecord::Base 
    has_one :name, inverse_of: :person 

    default_scope { eager_load(:name) } 
end 

config.model Person do 
    list do 
    field :name do 
     queryable true 
     searchable [:column1, :column2, ..] 
    end 
    end 
end 

हालांकि, अगर आप has many संघ के माध्यम से खोज करने के लिए की जरूरत है और मैं नहीं जानता कि क्या उस दृष्टिकोण होगा अभी भी काम करते हैं, लेकिन यहां अनुमान है:

class Person < ActiveRecord::Base 
    has_one :name, inverse_of: :person 
    has_many :name_translations, through: :name 

    default_scope { eager_load(:name_translations) } 
end 

config.model Person do 
    list do 
    field :name_translations do 
     queryable true 
     searchable :last_name 
    end 
    end 
end 
+0

मैं यह सत्यापित कर सकता हूं कि यह रेल 5, Rails_admin v1.1 पर काम करता है। एसोसिएशन फिल्टर में फ़ील्ड की सूची में दिखाई देता है, लेकिन जब तक कि पूछताछ योग्य नहीं है - खोजने योग्य लाइनों को रखा जाता है, यह सिर्फ पूरी सूची को फ़िल्टर करता है। कोई त्रुटि या कोई संकेत नहीं है कि क्या गलत है। यह फ़िल्टर/खोज कार्य अपेक्षित के रूप में बनाता है। आप यहां एक पूर्ण कार्य उदाहरण देख सकते हैं .. https://github.com/dgleba/hrapp361 –