0

我正在使用 globalize 进行 Rails 项目,其中我有一个名为Product的模型,如下所示:

class Product < ActiveRecord::Base

  translates :name, :description

  validates :name, presence: true

end

问题是验证不适用于其他语言环境的更新,它正在使用第一个创建方法,但是每当我想用另一个语言环境更新对象时,它不会检查名称的存在。下面的例子:

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

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

4

2 回答 2

0

尝试这个

class Product < ActiveRecord::Base

  translates :name, :description

  validates :name, presence: true

  class Translation
    # define translation validations here
    validates :name, presence: true
  end
end
于 2016-01-13T14:16:58.827 回答
0

p.update_attributes(name: "", locale: :es)

您正在将名称属性设置为“”

但是,在Product.create!您没有将值传递给“名称”时,它可以根据需要使用Product.create(name: "")!

于 2016-01-12T18:35:32.467 回答