以下是我正在使用的 3 个模型:
用户.rb:
# == Schema Information
#
# Table name: users
#
# id :integer not null, primary key
# name :string(255)
# email :string(255)
# remember_token :string(255)
# password_digest :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class User < ActiveRecord::Base
attr_accessible :name, :email, :password, :password_confirmation
has_many :jobs
has_many :restaurants, :through => :jobs
end
工作.rb
# == Schema Information
#
# Table name: jobs
#
# id :integer not null, primary key
# restaurant_id :integer
# shortname :string(255)
# user_id :integer
# created_at :datetime not null
# updated_at :datetime not null
#
class Job < ActiveRecord::Base
attr_accessible :restaurant_id, :shortname, :user_id
belongs_to :user
belongs_to :restaurant
has_many :shifts
end
餐厅.rb:
# == Schema Information
#
# Table name: restaurants
#
# id :integer not null, primary key
# name :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class Restaurant < ActiveRecord::Base
attr_accessible :name
has_many :jobs
has_many :users, :through => :jobs
has_many :positions
end
我的场景是用户已经创建并输入到用户表中,但是现在用户想要:
- 可能创建一个新餐厅,如果它不存在的话
- 通过工作表创建用户和餐厅之间的链接,并
- 可能同时在jobs表中创建昵称
我将在表单中使用嵌套模型来完成此操作,但是我目前删除了所有与此相关的代码。原因是我试图从 Restaurants_Controller 中创建记录,如您所见,它位于“链”的底部。仔细想想,这似乎是错误的。除了在工作模型中链接 user_id 之外,我可以让 rails 为所有事情做这件事。
无论如何,我认为我对 Rails 的理解并不高。保存上述内容的逻辑应该在哪里(作为一个人在表单上点击“提交”的结果)?