我是编码新手-并且没有足够的声誉来评论这个答案: Rails 3: Uniqueness validation for nested 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
上面带有“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
上面带有“ActiveModel::Validator”的代码会抛出这个错误:
“子类必须实现 validate(record) 方法。”
这是模型文件:
class Area < ActiveRecord::Base
validates :name,
:presence => true,
:uniqueness => {:scope => :city_id},
:nested_attributes_uniqueness => {:field => :name}
belongs_to :city
end
你可以在这里找到完整的代码: https ://github.com/syed-haroon/rose