Tôi đang sử dụng rails_admin cùng với globalize3 và không thể nhận các liên kết có thể tìm kiếm để hoạt động. Dưới đây là các mô hình (Person has_one/belongs_to Tên has_many/belongs_to NameTranslation):rails_admin liên kết có thể tìm kiếm
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
Mô hình NameTranslation
đến từ globalize3, nó có chứa các thuộc tính giống như tên (first_name
và last_name
) cộng locale
và name_id
,.
Trong config/initializers/rails_admin.rb
Tôi có
config.model Person do
list do
field :name do
searchable name_translations: :last_name
end
end
end
Sau đó, trong GUI, khi tôi thêm một bộ lọc trên name
, tôi nhận được:
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
Rõ ràng, rails_admin đang tìm kiếm một cột tên là name_translations.last_name
trong people
thay vì tham gia/bao gồm names
và name_translations
- tại sao?
Những gì tôi cần rails_admin để làm được điều này, làm việc trong IRB:
>> Person.joins(name: :name_translations).where('name_translations.last_name like "test"')
mà tạo ra các SQL sau:
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")
này có thể được thực hiện trong rails_admin? Nhờ sự giúp đỡ của bạn ...
Bạn đã bao giờ nhận ra điều này chưa? Tôi biết nó đã được một thời gian. – GreenPlastik
Không, tôi không, xin lỗi ... – sebastian