globalize3和easy_globalize3_accessors验证

nil*_*lid 3 localization ruby-on-rails internationalization ruby-on-rails-3 globalize3

我正在使用gems:globalize3和easy_globalize3_accessors.我有验证问题.例如,我有Post模型:

class Post
  translates :title, :content
  globalize_accessors :locales => [:en, :ru], :attributes => [:title, :content]
  validates :title, :content, :presence => true
end
Run Code Online (Sandbox Code Playgroud)

和形式:

= form_for @post do |f|
  -I18n.available_locales.each do |locale|
    = f.text_field "title_#{locale}"
    = f.text_area "content_#{locale}"
Run Code Online (Sandbox Code Playgroud)

它看起来像在视图中(如果I18n.locale =:ru):

<form action="/ru/posts" method="post">
  <input id="post_title_ru" name="post[title_ru]" type="text" />
  <textarea cols="40" id="post_content_ru" name="vision[content_ru]"></textarea>

  <input id="post_title_en" name="post[title_en]" type="text" />
  <textarea cols="40" id="post_content_en" name="vision[content_en]"></textarea>

  <input name="commit" type="submit" value="??????? ???????" />
</form>
Run Code Online (Sandbox Code Playgroud)

如果我只用俄语填写字段,验证通过,如果我想发布只有英文,并且只填写英文字段(当I18n.locale =:ru时),验证失败

Title can't be blank
Content can't be blank
Run Code Online (Sandbox Code Playgroud)

据我了解,属性存在问题,验证仅检查第一个属性:title_ru和:content_ru.其余的属性(:content_en和:title_en)检查无法到达.

如何制作第二个数据验证器来检查第一组属性的验证是否未通过?

提前致谢

apn*_*ing 5

validate :titles_validation

def titles_validation
  errors.add(:base, "your message") if [title_ru, title_en].all? { |value| value.blank? }
end
Run Code Online (Sandbox Code Playgroud)