gpt4 book ai didi

ruby-on-rails - rails 3 : Uniqueness validation for nested fields_for - Part2

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:41 36 4
gpt4 key购买 nike

我是编码新手 - 没有足够的声誉来评论这个答案: 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”的代码抛出这个错误:

“子类必须实现一个验证(记录)方法。”


这是模型文件:

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

最佳答案

@Syed:我认为您正在尝试这样做。否则回复我的评论。

# app/models/city.rb
class City < ActiveRecord::Base
has_many :areas
validates :areas, :area_name_uniqueness => true
end

# app/models/area.rb
class Area < ActiveRecord::Base
validates_presence_of :name
validates_uniqueness_of :name
end

# config/initializers/area_name_uniqueness_validator.rb
class AreaNameUniquenessValidator < ActiveModel::Validator
def validate_each(record, attribute, value)
record.errors[attribute] << "Area names must be unique" unless value.map(&:name).uniq.size == value.size
end
end

关于ruby-on-rails - rails 3 : Uniqueness validation for nested fields_for - Part2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10667835/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com