我有两个模特。
我希望公司有多个备忘录,而备忘录只有一个公司。
memorandum.rb
class Memorandum < ActiveRecord::Base
belongs_to :company
endcompany.rb
class Company < ActiveRecord::Base
has_many :memorandums, dependent: :destroy
# validation lines omitted
end当我试图将外键分配给备忘录时,我会得到一个丢失的属性错误can't write unknown attribute "company_id"
我指派公司内部的控制人员。该备忘录是在此之前创建的,当前备忘录的id保存在会话哈希中。
companies_controller.rb
def create
@company = Company.new(company_params)
Memorandum.find(session[:memorandum_id]).company = @company
respond_to do |format|
if @company.save
format.html { redirect_to @company, notice: 'Company was successfully created.' }
format.json { render action: 'show', status: :created, location: @company }
else
format.html { render action: 'new' }
format.json { render json: @company.errors, status: :unprocessable_entity }
end
end
end发布于 2015-08-21 18:57:24
我强烈建议您阅读Rails指南中的活跃的唱片协会。概念,并通过示例对其进行非常清楚的解释。
下面是两个示例链接:许多和至,它们将帮助您理解。
要解决当前问题,需要迁移将company_id添加到memorandums表中:
rails g migration addCompanyIdToMemorandums company_id:integer然后运行迁移:
bundle exec rake db:migrate正如上面的指南所解释的,您需要在belongs_to协会的表中使用一个外键来指向它的父表。您的内存是belongs_to company,所以您必须在内存表中添加company_id,这是我们刚才使用上述迁移完成的。
https://stackoverflow.com/questions/32147055
复制相似问题