1

Rails 4.2 アプリの翻訳済みファイルに問題があります。

バックグラウンド

私が使用している宝石のバージョンは次のとおりです。

gem "rails", "4.2.1"
gem "carrierwave" # 0.10.0
gem "globalize" # 5.0.1

そして私のモデル:

class Download < ActiveRecord::Base
  belongs_to :download_type
  has_and_belongs_to_many :products

  translates :title, :part_number, :file

  mount_uploader :file, DownloadFileUploader

  validates :title, presence: true

  def to_param
    "#{id}-#{title.parameterize}"
  end
end

問題

  1. 私の見解では、ダウンロードとそのダウンロードの現在のすべての翻訳を一覧表示したいのですが、取得できるのは各翻訳の現在のロケール データだけです。Rails コンソールで:

    > I18n.locale
    => :en
    
    > download = Download.find(481)
    => #<Download id: 481, title: "SmartSensor HD Quick-reference Guide (User)", part_number: "WX-500-0171", download_type_id: 3, created_at: "2015-01-16 22:49:13", updated_at: "2015-04-20 16:59:25", file: "smartsensor_hd_user_quick-reference_guide-20150116...", download_updated_at: nil>
    
    > download.translations.count
    => 8
    
    > download.translated_locales
    => [:de, :en, :es, :fr, :it, :pt, :ru, :"zh-CN"]
    
    > download.file.class
    => DownloadFileUploader
    
    > download.file.url
    => "/uploads/download/file/481/smartsensor_hd_user_quick-reference_guide-20150116154913-en.pdf"
    
    > download.title
    => "SmartSensor HD Quick-reference Guide (User)"
    
    > download.part_number
    => "WX-500-0171"
    

    ロケールが変更された場合:

    > I18n.locale = :de
    => :de
    
    > download.file.class
    => DownloadFileUploader
    
    > download.file.url
    => "/uploads/download/file/481/smartsensor_hd_user_quick-reference_guide-20150116154913-en.pdf"
    
    > download.title
    => "SmartSensor HD Kurzanleitung"
    
    > download.part_number
    => "WX-502-0006"
    

    翻訳に直接アクセスしようとすると:

    > I18n.locale = :de
    => :de
    
    > download.translation.file.class
    => String
    
  2. アップローダのモデルへのマウント方法を変更すると、次のようになります。

    Translation.mount_uploader :file, DownloadFileUploader
    

    ファイルを含む既存の翻訳リストは正しく表示されますが、ファイルをアップロードできなくなりました。データベースに格納されるのは次のとおりです。

     /uploads/download/translation/file/401/%23%3CActionDispatch%3A%3AHttp%3A%3AUploadedFile%3A0x007f9c12e6fe00%3E
    

    パスに挿入/translationされることに注意してください。これはアップローダーで修正できますが、ファイル名は実際にはファイルではありません。

  3. モデルのtranslates :title, :part_number, :file に移動すると、マウントされたアップローダーが Globalize によってオーバーライドされ、アクセス時にその列がクラスとして返されます。mount_uploader :file, DownloadFileUploaderString

助けを求める叫び

ヘルプ!

4

2 に答える 2