Рельсы, как реализовать модель продукта и описание - PullRequest
1 голос
/ 22 декабря 2010

Я хочу создать магазин, как приложение в рельсах, с продуктами.У этих продуктов есть описание на нескольких языках.

Я не уверен, каков "лучший" способ реализовать его.

Должен ли я создать 2 модели (Product и ProductDescription) илисобрать все это в одну модель?

Кто-нибудь испытал, что может быть хорошим и чистым способом для этого?

ОБНОВЛЕНИЕ:

Не знаю, так ли этохорошее решение, но оно работает.

в модели продукта:

def self.set_language(language)
    @@language = language
end

def title    
  read_attribute("title_#{@@language}")
end

в application_controller

before_filter :set_language

private

def set_language
    Product.set_language('en')
end

Ответы [ 2 ]

2 голосов
/ 22 декабря 2010
  1. Первый вариант, вы можете использовать I18n, но это более применимо, когда содержимое постоянное, как заголовок и метка на вашей веб-странице.

  2. Или вы можете иметь несколько столбцов, таких как description_en, description_fr, description_jp в своей таблице продуктов, и прикреплять параметры [: locale] в каждом запросе.

например, если params [: locale] == 'jp', вы просто извлекаете содержимое description_jp, поэтому в вашем контроллере вы можете написать так:

def show
  @product = Product.find(params[:id])
  @locale = params[:locale]
end

а на ваш взгляд:

<p>
 <%= @product.send("description_#{@locale}") %>
</p>

и как установить параметр локали?Я предлагаю вам прочитать этот раздел.http://edgeguides.rubyonrails.org/i18n.html#setting-the-locale-from-the-url-params

Надеюсь, это поможет вам!

0 голосов
/ 22 декабря 2010

Вам нужно изучить i18n (Интернационализация)

Ознакомьтесь с руководствами по этому поводу здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...