Ruby on rails Rails如何实现产品模型和描述

Ruby on rails Rails如何实现产品模型和描述,ruby-on-rails,model,Ruby On Rails,Model,我想在rails中创建一个类似商店的应用程序,其中包含产品。 这些产品有多种语言的描述 我不确定实现它的“最佳”方式是什么 我应该创建两个模型(产品和产品描述) 还是把它们放在一个模型中 有没有人体验过什么是好的、干净的方法 更新: 我不知道这是否是一个好的解决方案,但它是有效的 在产品型号中: def self.set_language(language) @@language = language end def title read_attribute("title_

我想在rails中创建一个类似商店的应用程序,其中包含产品。 这些产品有多种语言的描述

我不确定实现它的“最佳”方式是什么

我应该创建两个模型(产品和产品描述) 还是把它们放在一个模型中

有没有人体验过什么是好的、干净的方法

更新:

我不知道这是否是一个好的解决方案,但它是有效的

在产品型号中:

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

def title    
  read_attribute("title_#{@@language}")
end
在应用程序中(u controller)

before_filter :set_language

private

def set_language
    Product.set_language('en')
end

您需要研究i18n(国际化)

查看有关它的指南

  • 第一种选择是,您可以使用I18n,但当内容不变时,如网页上的标题和标签,这更适用

  • 或者,在产品表中可以有多个列,如description\u en、description\u fr、description\u jp,并在每个请求中附加参数[:locale]

  • 例如,如果params[:locale]=“jp”,您只需获取description_jp的内容,因此在您的控制器中,您可以这样编写:

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

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

    如何设置语言环境参数?我建议你阅读这一节。


    希望它能帮助你

    说明应该在管理后端可编辑,所以它需要存储在数据库中。不确定这是否可行!你可能是想谢谢你的纠正Sanghi,那是我的错。修好了!谢谢,但是是否可以覆盖模型中的“正常”描述属性。因此,当我调用@product.description时,将加载来自匹配区域设置的描述(如上面的示例)?是的,您可以覆盖模型中的“description”方法。但我不知道如何检查模型中的参数[:locale]。我只能在控制器中获取它。但我认为在这个模型中一定有办法做到这一点。谢谢你们的帮助,它现在可以工作了。我用我的解决方案更新了答案。