Rails :has_many make sure one is selected -
Rails :has_many make sure one is selected -
i have installations , versions model , installation many versions. installation can create many versions , user needs select version marked default in versions database boolean datatype.
how can create sure user has selected version list of many different versions within installation screen. 1 can selected , default
field of versions model changed 'yes' , other versions belong installation set 'no'
i suggest add together foreign_key :default_version_id
installation model track default version instead of using entire column in version class purpose. create validation easier too. anyway, current implementation validation rule this:
class installation < activerecord::base has_many :versions validate :default_version_must_be_selected private def default_version_must_be_selected if versions.collect{|v| v if(v.default == true)}.compact.length != 1 errors.add(:base, 'one default version required' end end end
edit:
by removing default
flag version
, adding default_version_id
installation
implementation more straight forward:
class installation < activerecord::base has_many :versions belongs_to :default_version, class_name: 'version' validates_presence_of :default_version_id end
i think you'll find interacting installations default version become lot easier approach. it's association.
ruby-on-rails ruby-on-rails-4
Comments
Post a Comment