Rails 3:嵌套fields_for的唯一性验证 - 第2部分

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

Sye*_*yed 1

我在这里找到了答案:

https://rails.lighthouseapp.com/projects/8994/tickets/2160-nested_attributes-validates_uniqueness_of-fails

&

被破坏的嵌套模型轨道中的 validates_uniqueness_of

这是针对 Rails 2 的,我需要在这里修改一行: add_to_base已被弃用,并且在 3.1 中不可用。使用self.errors.add(:base, message)