В чем разница между `new` и` build` в рельсах? - PullRequest
0 голосов
/ 10 декабря 2018

Я не понимаю эту строку кода:

@club = current_user.clubs.build(club_params)

Я знаю, что тот же код может быть создан с помощью метода new, и тогда мы можем сохранить переменную экземпляра, но что делает build делать в этом случае?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Новые и сборки такие же, как в документации https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation.rb

0 голосов
/ 10 декабря 2018

new - для нового экземпляра конкретной модели:

foo = Foo.new

build - для создания нового экземпляра в ассоциации AR:

bar = foo.build_bar  # (has_one or belongs_to)

или

bar = foo.bars.build # (has\_many, habtm or has_many :through)

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

Обновление

сборка и новые являются псевдонимами, как определено в ActiveRecord :: Relation :

Так, если класс Foo имеет_many Bars, следующие эффекты имеют идентичный эффект:

  • foo.bars.new <=> foo.bars.build
  • Bar.where(:foo_id=>foo.id).new <=> Bar.where(:foo_id=>foo.id).build

А если !foo.new_record?

  • foo.bars.new <=> Bar.where(:foo_id=>foo.id).new
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...