首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails由于关联而缺少属性错误

Rails由于关联而缺少属性错误
EN

Stack Overflow用户
提问于 2015-08-21 18:25:13
回答 1查看 1.1K关注 0票数 0

我有两个模特。

  • 公司
  • 备忘录

我希望公司有多个备忘录,而备忘录只有一个公司。

memorandum.rb

代码语言:javascript
运行
复制
class Memorandum < ActiveRecord::Base
  belongs_to :company
end

company.rb

代码语言:javascript
运行
复制
class Company < ActiveRecord::Base
  has_many :memorandums, dependent: :destroy
  # validation lines omitted
end

当我试图将外键分配给备忘录时,我会得到一个丢失的属性错误can't write unknown attribute "company_id"

我指派公司内部的控制人员。该备忘录是在此之前创建的,当前备忘录的id保存在会话哈希中。

companies_controller.rb

代码语言:javascript
运行
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-21 18:57:24

我强烈建议您阅读Rails指南中的活跃的唱片协会。概念,并通过示例对其进行非常清楚的解释。

下面是两个示例链接:许多,它们将帮助您理解。

要解决当前问题,需要迁移将company_id添加到memorandums表中:

代码语言:javascript
运行
复制
rails g migration addCompanyIdToMemorandums company_id:integer

然后运行迁移:

代码语言:javascript
运行
复制
bundle exec rake db:migrate

正如上面的指南所解释的,您需要在belongs_to协会的表中使用一个外键来指向它的父表。您的内存是belongs_to company,所以您必须在内存表中添加company_id,这是我们刚才使用上述迁移完成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32147055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档