4

私はRuby on Railsを(3.2.2)、globalize3(0.2.0)とbatch_translations(0.1.2)ルビーの宝石を使用しています。私はglobalize3が扱う翻訳されたデータを検証したいと思います。翻訳されたデータを検証する方法は?

<%= form_for(@article) do |f| %> 
    English translation: 
    <%= f.text_field :title %> 
    <%= f.text_field :content %> 

    Italiano translation: 
    <%= f.globalize_fields_for :it do |g| %> 
     <%= g.text_field :title %> 
     <%= f.text_field :content %> 
    <% end %> 
<% end %> 

私は希望:私は私のROOT_RAILS/app/views/articles/_form.html.erbファイルに...

class Article < ActiveRecord::Base 
    translates :title, :content 

    # This is needed to make the batch_translations to work. 
    attr_accessible :translations_attributes 
    accepts_nested_attributes_for :translations 

    validates :title, 
    :presence => true, 
    :length => ... 
    validates :content, 
    :presence => true, 
    :length => ... 

    ... 
end 

:それは私が持っている私のROOT_RAILS/app/models/article.rbファイルに... ...場合、例えば、

ですフォームを送信するときにtitlecontent値のデータを検証すると、I18n.localeI18n.default_localeではありません。つまり、データベースに正しい情報も格納するために、ユーザーがデフォルトの英語ではないロケール言語の翻訳データを提出するときに、titlecontentの属性を検証したいと思います。

可能でしょうか?もしそうなら、どうですか?

注:私はthis questionから例を取りました。

+0

テストにはどのようなフレームワークを使用していますか?テスト::ユニット? Rspec? – Dan

+0

@ダン - 私はRspecフレームワークを使用しています。 – Backo

答えて

0

私が正しく理解していれば、これについていくつかの方法があります。

1)ロケールで送信されたフォームが正しいローカライズされたコンテンツテーブルを持続するに含まれるテストコントローラ・レベルのテスト、。

it "persists localized content for the Italian locale" do 
     Article.should_receive(:create).with(:locale => 'it', :title => 'title goes here', :content => 'this is content') 
     post :create, :locale => 'it', :title => 'title goes here', :content => 'this is content' 
    end 

これは、基本的に記事のモデルは、これらの引数を作成するメッセージが表示されるべきであると述べている:それを行う1つの方法は、このようなものになるだろう。私はbatch_translations APIがどのように動作するかについては完全にはっきりしていないので、パラメータがそのスタイルフォームからどのように来るかを確認したいと思うでしょう。その時点で

は、私はあなたが適切にデータが正しくデータベースに永続しまったことをテストすることと思います。あなたが避けたいグローバリゼーションの宝石が働いているかどうかはさらに検証されます。境界を試してみてください。

関連する問題