验证翻译类I18n :: Backend :: ActiveRecord :: Translation Rails

时间:2014-07-23 13:39:28

标签: validation activerecord ruby-on-rails-4

我使用gem i18n-active_record来翻译我网站上的数据并将翻译保存在数据库中。我已授予管理员编辑翻译的权限。一切正常。

但是这个更新数据的错误部分是管理员可以更新翻译而没有任何可能破坏应用程序的数据(值),所以我希望把 该课程的验证。

如果我这样使用

class Translation < ActiveRecord::Base
  validates :value, :presence => { :message => "Please enter your value" }
end

它不起作用。

即使我尝试过使用回调和范围,但它们似乎都没有用。

任何解决方案或参考资料都可以完成。

1 个答案:

答案 0 :(得分:0)

您是否尝试将此约束直接放在“值”表字段上?

这就是它在这里的表现:

>> class Translation < ActiveRecord::Base
>>   validates :value, :presence => { :message => "Please enter your value" }
>>   end
=> {:presence=>{:message=>"Please enter your value"}}
>> Translation.new.tap { |t| p t.valid?; p t.errors }
false
#<ActiveModel::Errors:0x007fce0f11aa78 @base=#<Translation id: nil, value: nil>, @messages={:value=>["can't be blank", "Please enter your value", "Please enter your value"]}>
=> #<Translation id: nil, value: nil>
>> Translation.new(value: "").tap { |t| p t.valid?; p t.errors }
false
#<ActiveModel::Errors:0x007fce0f0f3798 @base=#<Translation id: nil, value: "">, @messages={:value=>["can't be blank", "Please enter your value", "Please enter your value"]}>
=> #<Translation id: nil, value: "">
>> Translation.new(value: "something").tap { |t| p t.valid?; p t.errors }
true
#<ActiveModel::Errors:0x007fce0f0cb540 @base=#<Translation id: nil, value: "something">, @messages={}>
=> #<Translation id: nil, value: "something">