Помогите мне выяснить, почему метод new и build не работает - PullRequest
0 голосов
/ 28 сентября 2010

У меня проблема с моими ассоциациями.У меня есть отношение n: n, и все идет хорошо, но если я хочу инициализировать новый объект, а затем сохранить его, он будет сохранен без ассоциаций.Например.

Модели:

class User
  has_many :users_in_organizations, :class_name => 'UserInOrganization'
  has_many :organizations,:through => :users_in_organizations
end 

#Attributes [:user_id, :organization_id, :user_role]
class UserInOrganization 
   set_table_name 'users_in_organizations'
   belongs_to :user
   belongs_to :organization
end

class Organization
  has_many :users_in_organizations, :class_name => 'UserInOrganization'
  has_many :users, :through => :users_in_organizations
end

это отлично работает, но проблема в

org = User.first.organizations.new(:name => 'Test') #  new || build is the same
org.save # => true
User.first.organizations  # => []
Organization.all # => ['Test']

, но если я использую create, то это работает

org = User.first.organizations.create(:name => 'Test')
User.first.organizations  # => ['Test']
Organization.all # => ['Test']

Кто-нибудь может сказать мне, что я делаю не так?

Спасибо :)

1 Ответ

2 голосов
/ 29 сентября 2010

Если вы хотите, чтобы он работал для new метода, попробуйте это:

u = User.first
u.organizations.new :name => "new organozation"
u.save
u.organizations.size
=> 1

Когда вы делаете org = User.first.organizations.new :name => "test", вы назначаете org только организацию и сохраняете только этот объект. Это не сохраняет связанные объекты. Вот почему это не работает.

Когда вы вызываете create, он сохраняет созданные объекты в дБ, использование new или build не сохраняет его в дБ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...