Adding and validating with has_many :through

I don't have a full grasp on has_many :through associations. I've
detailed my models below and am trying to figure out how to do the
following in the proper manner.

1. Add the selected software (only one selectable) to the current
ticket. I have << @software working just fine.
2. Validate that A) 1 or more systems have been selected, B)
validations should go.
3. Create the software to system association (w/ sofware_status value)
through the join model
4. How to setup the new/edit form to manage all of this.

Thanks in advance.


has_and_belongs_to_many :software


has_many :system_software
has_many :systems, :through => :system_software


has_many :system_software
has_many :software, :through => :system_software


belongs_to :system
belongs_to :software
belongs_to :software_status


has_many :system_software