Проверить наличие связанной модели - PullRequest
0 голосов
/ 06 декабря 2011

Я не понимаю, у меня есть следующие модели:

class Seller < ActiveRecord::Base
  has_many :cars, :dependent => :destroy
end

class Car < ActiveRecord::Base
  belongs_to :seller
  # I have tried both with the validates existence gem:
  validates :existence => {:allow_nil => false}
  # And normally...
  validates_presence_of :seller
end

Но ничего не работает, если я делаю следующее:

seller = Seller.new()
seller.cars.build()
seller.save # I get => false @messages={:seller=>["does not exist"], :seller_id=>["does not exist"]}  

Я должен иметь возможность сделать это правильно?

Это похоже - это проверка связанной модели перед сохранением материнского объекта - и я НЕ определил validates_associated или что-то подобное.Или я получаю порядок сохранения и проверки всех неправильно?

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Seller не существует, потому что он не был сохранен в базе данных, он просто находится в памяти, и поэтому Car не знает Seller's идентификатор, который ему нужно знать - он должен добавить его впродавец_id столбец.Таким образом, сначала вы должны сохранить Seller, и вам не нужно звонить validates_presence_of: продавец в Car.

1 голос
/ 06 декабря 2011

Я сталкивался с этим в прошлом и использовал "inverse_of", чтобы решить это.Вам также нужно "acceptpts_nested_attributes_for".Таким образом, в продавце, вы хотели бы изменить свой код на следующее:

class Seller < ActiveRecord::Base
  has_many :cars, :dependent => :destroy, :inverse_of => :seller
  accepts_nested_attributes_for :cars
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...