首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails 3 has_one路由

在Rails 3中,has_one关联用于在两个模型之间建立一对一的关系。这意味着一个模型实例只能与另一个模型实例相关联。例如,如果有一个Person模型和一个Profile模型,每个人只有一个个人资料,那么可以在这两个模型之间使用has_one关联。

Person模型中,可以这样定义关联:

代码语言:ruby
复制
class Person< ActiveRecord::Base
  has_one :profile
end

Profile模型中,可以这样定义关联:

代码语言:ruby
复制
class Profile< ActiveRecord::Base
  belongs_to :person
end

has_one关联会自动为Person模型添加一些有用的方法,例如:

  • person.profile:获取与该人关联的个人资料。
  • person.profile=:设置与该人关联的个人资料。
  • person.build_profile:创建一个新的个人资料实例,并将其与该人关联。
  • person.create_profile:创建一个新的个人资料实例,将其与该人关联,并将其保存到数据库中。
  • person.create_profile!:与create_profile类似,但在保存时会抛出异常,如果个人资料无法保存。

在Rails路由中,可以使用resources方法为has_one关联生成路由:

代码语言:ruby
复制
resources :people do
  resource :profile
end

这将生成以下路由:

  • person_profile GET|POST /people/:person_id/profile(.:format) profiles#create
  • edit_person_profile GET /people/:person_id/profile/edit(.:format) profiles#edit
  • person_profile GET /people/:person_id/profile(.:format) profiles#show
  • person_profile PATCH|PUT /people/:person_id/profile(.:format) profiles#update
  • person_profile DELETE /people/:person_id/profile(.:format) profiles#destroy

这些路由将映射到ProfilesController中的相应操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券