Używam rails_admin razem z globalizacją3 i nie mogę uzyskać asocjacji przeszukiwania. Oto modele (osoba has_one/belongs_to Nazwa has_many/belongs_to NameTranslation):przeszukiwalne stowarzyszenie 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
Model NameTranslation
pochodzi globalize3, zawiera te same atrybuty jak nazwa i last_name
(first_name
) plus locale
i name_id
,.
W config/initializers/rails_admin.rb
mam
config.model Person do
list do
field :name do
searchable name_translations: :last_name
end
end
end
Następnie w GUI, kiedy dodać filtr na name
, otrzymuję:
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
Oczywiście rails_admin szuka kolumnie o nazwie name_translations.last_name
w people
zamiast łączenia/w tym names
i name_translations
- dlaczego?
Co muszę rails_admin zrobić, to ten, pracujący w IRB:
>> Person.joins(name: :name_translations).where('name_translations.last_name like "test"')
który generuje następujący SQL:
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")
można to zrobić w rails_admin? Dzięki za pomoc ...
Czy zdarzyło Ci się to zrozumieć? Wiem, że minęło trochę czasu. – GreenPlastik
Nie, nie, przepraszam ... – sebastian