我使用了rails globalize和I18n gem。但现在我无法对我的模型进行排序。你们能帮忙吗?
我尝试添加新索引,但我并不完全熟悉索引。
Controller.rb
def index
@foods = Food.all.order(:name)
add_breadcrumb "index", foods_path
end
模式
create_table "food_translations", force: :cascade do |t|
t.integer "food_id", null: false
t.string "locale", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "name"
t.string "bio"
end
add_index "food_translations", ["food_id"], name: "index_food_translations_on_food_id", using: :btree
add_index "food_translations", ["locale"], name: "index_food_translations_on_locale", using: :btree
add_index "food_translations", ["name"], name: "index_food_translations_on_name", using: :btree
create_table "foods", force: :cascade do |t|
t.string "address"
t.string "phone"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.string "yelp"
t.string "youtube"
end
答案 0 :(得分:1)
是的,您需要加入。如果您没有翻译模型,可以使用.joins作为查找器。像:
Food.joins('INNER JOIN food_translations ON foods.id=food_translations.food_id')
.order('food_translations.name').where('food_translations.locale=xxx')
ps:我想知道你为什么没有关于“food_id”和“locale”的索引,这应该是uniq。在您的情况下,您可以使用同一种语言为一种食物提供两种或更多种翻译。