我不明白这一行代码:
@club = current_user.clubs.build(club_params)
我知道同样的代码可以用new方法创建,然后我们可以保存示例变量,但是build在这种情况下做什么呢?
new
build
txu3uszq1#
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
build和new是ActiveRecord::Relation中定义的别名:因此,如果类Foo具有_many条,则以下内容具有相同的效果:
foo.bars.new
foo.bars.build
Bar.where(:foo_id=>foo.id).new
Bar.where(:foo_id=>foo.id).build
如果!foo.new_record?
!foo.new_record?
bqf10yzr2#
新版本和内部版本与文档相同https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation.rb
eoigrqb63#
build和new几乎相同,但是当您在关联中使用belongs_to时,会使用build在该患者中,属于用户,因此我们使用构建
belongs_to :user @patient = current_user.patients.build(patient_params) @patient.save
3条答案
按热度按时间txu3uszq1#
new表示特定模型的新示例:
Build用于在AR关联中创建新示例:
或
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
build和new是ActiveRecord::Relation中定义的别名:
因此,如果类Foo具有_many条,则以下内容具有相同的效果:
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
bqf10yzr2#
新版本和内部版本与文档相同https://github.com/rails/rails/blob/master/activerecord/lib/active_record/relation.rb
eoigrqb63#
build和new几乎相同,但是当您在关联中使用belongs_to时,会使用build
在该患者中,属于用户,因此我们使用构建