Вот пример отношения:Почему я могу обойти связь has_one с оператором <<?
class User < ActiveRecord::Base
has_one :group, through: :group_membership
has_one :group_membership
end
class Group < ActiveRecord::Base
has_many :users, through: :group_memberships
has_many :group_memberships
end
class GroupMembership < ActiveRecord::Base
belongs_to :group
belongs_to :user
end
Почему я в состоянии сделать следующее?
Group.first.users << User.first
Group.second.users << User.first
Я бы подумал, что отношения has_one помешали бы этому. Есть ли какая-то магия за <<
, о которой я не знаю?
User.first.group
вернет вторую группу, но обе группы сохраняются.
'has_one' возвращает только один результат. Это не мешает вам что-либо делать. Это может быть неожиданным, если вы добавите в ассоциацию более одного элемента. – ptd
Вы что? Ruby 2.1.5, Rails 4.2.0, я получаю 'NoMethodError', так как моя модель вообще не имеет' << '. –