ruby-on-rails - Rails关系一对多;无法构建子对象?

标签 ruby-on-rails foreign-key-relationship table-relationships

class Photo < ActiveRecord::Base
    has_many :boosts, class_name: BoostedPhoto
    ...
end

class BoostedPhoto < ActiveRecord::Base
    belongs_to :photo
end

到目前为止,这就是我的设置方式,但是当我尝试在控制台中执行此操作时:

photo = Photo.first
photo.boosts.create(title: 'testing')

我得到以下结果

(0.3ms)  begin transaction
(0.1ms)  rollback transaction
ActiveRecord::UnknownAttributeError: unknown attribute: photo_id

几个小时以来我一直在研究如何建立人际关系,我想我可能忽略了一些非常简单的事情......对于这个新问题感到抱歉,但我开始因沮丧而抓狂!

最佳答案

boosted_photos 表中应该有一个外键列。一般规则是我们将 belongs_to 关联放在具有外键的表模型中,这里是 BoostedPhoto

之后,以下应该可以工作,

photo = Photo.first
photo.boosts.create(title: 'testing')

关于ruby-on-rails - Rails关系一对多;无法构建子对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859805/

相关文章:

Laravel 4 - 多对多 - 数据透视表不更新

ruby-on-rails - 如何从仅一种应用开始瘦身?

delphi - 语法 SQLite 选择行 1 :N relationship

javascript - BackboneJS、RequireJS 应用程序模块可从整个项目访问

mysql - 如果两个表只有一列不同,我是否应该有两个单独的表?

mysql - 每个表两个四个外键不能引用主表中的单个主键

php - Laravel 5.0 : Querying and displaying child objects in view from nested relationship

php - 表连接 SQL/PHP (CRUD)

ruby-on-rails - Rails url 助手在 Rspec 中不起作用

ruby-on-rails - 是否可以与主 Rails 应用程序分开更改 delay_job 的日志记录级别?