I have a model A that has a "has_many" association to another model B. I have a business requirement that an insert into A requires at least 1 associated record to B. Is there a method I can call to make sure this is true, or do I need to write a custom validation?
You can use validates_presence_of
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates_presence_of
class A < ActiveRecord::Base has_many :bs validates_presence_of :bs end
or just validates
http://apidock.com/rails/ActiveModel/Validations/ClassMethods/validates
class A < ActiveRecord::Base has_many :bs validates :bs, :presence => true end
But there is a bug with it if you will use accepts_nested_attributes_for
with :allow_destroy => true
: Nested models and parent validation. In this topic you can find solution.
-------- Rails 4 ------------
Simple validates
presence
worked for me
class Profile < ActiveRecord::Base belongs_to :user validates :user, presence: true end class User < ActiveRecord::Base has_one :profile end
This way, Profile.create
will now fail. I have to use user.create_profile
or associate a user before saving a profile
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With