Sye*_*yed 5 ruby ruby-on-rails
我是编码的新手 - 并没有足够的声誉来评论这个答案: Rails 3:嵌套fields_for的唯一性验证
所以我创建这个问题为"第2部分":)
嘿伙计们请帮助我 - 我是一名网页设计师,但很想学习编码,从我的日子开始.
# app/validators/nested_attributes_uniqueness_validator.rb
class NestedAttributesUniquenessValidator < ActiveModel::EachValidator
record.errors[attribute] << "Products names must be unique" unless value.map(&:name).uniq.size == value.size
end
end
Run Code Online (Sandbox Code Playgroud)
上面带有"ActiveModel :: EachValidator"的代码抛出此错误:
"区域1"的"未定义方法`map":字符串"
# app/validators/nested_attributes_uniqueness_validator.rb
class NestedAttributesUniquenessValidator < ActiveModel::Validator
record.errors[attribute] << "Products names must be unique" unless value.map(&:name).uniq.size == value.size
end
end
Run Code Online (Sandbox Code Playgroud)
上面带有"ActiveModel :: Validator"的代码抛出此错误:
"子类必须实现验证(记录)方法."
这是模型文件:
class Area < ActiveRecord::Base
validates :name,
:presence => true,
:uniqueness => {:scope => :city_id},
:nested_attributes_uniqueness => {:field => :name}
belongs_to :city
end
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到完整的代码:https: //github.com/syed-haroon/rose
我在这里找到了答案:
&
被破坏的嵌套模型轨道中的 validates_uniqueness_of
这是针对 Rails 2 的,我需要在这里修改一行:
add_to_base已被弃用,并且在 3.1 中不可用。使用self.errors.add(:base, message)
| 归档时间: |
|
| 查看次数: |
1504 次 |
| 最近记录: |