Creating & Validating w/ 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 @ticket.software << @software working just fine. 2. Validate that A) 1 or more systems have been selected, B) A :software_status has been selected. I'm not sure where these 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.

Ticket.rb

has_and_belongs_to_many :software

Software.rb

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

System.rb

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

SystemSoftware.rb

belongs_to :system belongs_to :software belongs_to :software_status

SoftwareStatus.rb

has_many :system_software