使用Globalize无效工作验证Rails中的状态

时间:2016-01-12 18:29:17

标签: ruby-on-rails-4 globalize

我正在使用globalize开展一个rails项目,其中我有一个名为 Product 的模型:

class Product < ActiveRecord::Base

  translates :name, :description

  validates :name, presence: true

end

问题是验证不适用于其他语言环境的更新,它正在处理第一个create方法,但每当我想用另一个语言环境更新对象时,它都不会检查因为名字的存在。示例如下:

Product.create!
   (0.3ms)  BEGIN
   (0.2ms)  ROLLBACK
ActiveRecord::RecordInvalid: Validation failed: Name can't be blank

创建产品并具有翻译后,在尝试更新其他区域设置时,不会检查验证程序,例如:

irb(main):009:0> p.update_attributes(name: "", locale: :es)
   (0.2ms)  BEGIN
   (0.1ms)  COMMIT
=> true

关于如何实现这一点的任何想法?

2 个答案:

答案 0 :(得分:0)

<li>

您要将名称属性设置为&#34;&#34;

然而,在p.update_attributes(name: "", locale: :es) 中,您没有将价值传递给&#39; name&#39; 如果您愿意,可以将其用作Product.create!

答案 1 :(得分:0)

试试这个

class Product < ActiveRecord::Base

  translates :name, :description

  validates :name, presence: true

  class Translation
    # define translation validations here
    validates :name, presence: true
  end
end