我正在使用rails_admin和globalize3,并且无法使可搜索的关联工作.以下是模型(Person has_one/belongs_to Name has_many/belongs_to NameTranslation):
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
Run Code Online (Sandbox Code Playgroud)
该NameTranslation模型来自globalize3,它包含与name(first_name和last_name)plus locale和name_id,相同的属性.
在config/initializers/rails_admin.rb我有
config.model Person do
list do
field :name do
searchable name_translations: :last_name
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,在GUI中,当我添加过滤器时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
Run Code Online (Sandbox Code Playgroud)
显然,rails_admin正在寻找一个名为列name_translations.last_name中people,而不是加入/包括names和name_translations-为什么?
我需要rails_admin做的是这个,在irb中工作:
>> Person.joins( name: :name_translations ).where('name_translations.last_name like "test"')
Run Code Online (Sandbox Code Playgroud)
生成以下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")
Run Code Online (Sandbox Code Playgroud)
可以在rails_admin中完成吗?谢谢你的帮助...
从这个线程,我遵循了尼克罗斯福的建议,它对我的情况有效
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
Run Code Online (Sandbox Code Playgroud)
我试过了searchable room: :name,但searchable [{Room => :name}]它不起作用,但似乎使它起作用。
| 归档时间: |
|
| 查看次数: |
3212 次 |
| 最近记录: |