0

次の設定があったとしましょう

class User < ActiveRecord::Base
    has_many :address
    accepts_nested_attributes_for :address, allow_destroy: true
end

class Address < ActiveRecord::Base
    attr_accessible :house_color, :street_address
end

そして、何らかの理由で、特定のユーザーが特定の色のアドレスを 1 つだけ持つことを許可したかったのです。

どうすればロックダウンできますか? 何かのようなもの

   validates :address.house_color.unique

機能を除いて....

ありがとう!

4

2 に答える 2

1
class User < ActiveRecord::Base
  has_many :address
  accepts_nested_attributes_for :address, allow_destroy: true
  validates_associated :addresses
end

class Address < ActiveRecord::Base
  belongs_to :user
  attr_accessible :house_color, street_address
  validates_uniqueness_of :house_color. :scope => :user_id
end
于 2013-01-10T18:29:13.733 に答える
0

別の方法は reject_if を使用することです

accepts_nested_attributes_for :address, allow_destroy: true, reject_if: proc { |attributes| Address.where(:house_color => attributes["house_color"], :user_id => attributes["users_id]).exists? }
于 2015-02-27T15:42:02.353 に答える