Вам нужно будет использовать: foreign_key также в вызове has_and_belongs_to_many.Таким образом, в модели StandardWidget вам нужно следующее:
has_and_belongs_to_many :parts, :join_table => "widgets_parts", :association_foreign_key => "widget_custom_id", :foreign_key => "part_custom_id"
Предупреждение в документации означает, что если вы используете имена таблиц, отличные от 'parts' для модели Part и 'standard_widgets' для модели StandardWidget, товам нужно вызвать set_table_name под вызовом habtm.