Что у вас есть стандартный has_many/belongs_to
отношения:
Таким образом, ваши модели должны быть построены таким образом:
class DisclipleClass < ActiveRecord::Base
#columns id | user_id | etc | etc | created_at | updated_at
belongs_to :user
end
class User < ActiveRecord::Base
has_many :disciple_classes
end
Несколько важных замечания:
- Если у вас есть связь ActiveRecord в вашей системе, она должна быть би-полосным - IE, если у вас есть
has_many :classes
, он должен быть согласован с belongs_to :class
(если вы не сделаете много конфигурации
- При объявлении ассоциаций
belongs_to
вам необходимо, чтобы ассоциация была единственной. Вы пишете его как множественное число
- При объявлении ассоциаций вы можете иметь только одну ассоциацию за имя. Ваше использование
belongs_to :users
и has_many :users
просто не будет распознано.
- Все ассоциации в основном охватывают определенные ассоциации SQL. Вы бы хорошо прочитали relational databases и как их внешние ключи позволяют им взаимодействовать.
- Термины «класс, класс» обычно зарезервированы на большинстве языков.Не используйте их
has_and_belongs_to_many
Теперь, если вы хотите сделать many-to-many
отношения, вы будете использовать has_and_belongs_to_many
:
Это даст вам возможность использования:
#app/models/user.rb
class User < ActiveRecord::Base
has_and_belongs_to_many :disciple_classes
end
#app/models/disciple_class.rb
class DiscipleClass < ActiveRecord::Base
has_and_belongs_to_many :users
end
Это позволит создать join table следующим образом:
#disciples_classes_users
disciple_class_id | user_id
Это позволит вам позвонить:
@user.disciple_classes
@disciple_class.users
Пожалуйста, обратитесь http://toranbillups.com/blog/archive/ 2010/09/09/How-to-model-a-many-to-many-relationship-in-rails /, вы найдете хорошее объяснение. –