ruby-on-rails “新”和“内置”导轨有什么区别?

oipij1gg  于 2023-02-06  发布在  Ruby
关注(0)|答案(3)|浏览(163)

我不明白这一行代码:

@club = current_user.clubs.build(club_params)

我知道同样的代码可以用new方法创建,然后我们可以保存示例变量,但是build在这种情况下做什么呢?

txu3uszq

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.bars.new〈=〉Bar.where(:foo_id=>foo.id).new
eoigrqb6

eoigrqb63#

build和new几乎相同,但是当您在关联中使用belongs_to时,会使用build
在该患者中,属于用户,因此我们使用构建

belongs_to :user
@patient = current_user.patients.build(patient_params) 
@patient.save

相关问题