在Rails中使用带HAS_ONE关联的构建

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

在本例中,我创建了一个user没有profile,然后创建一个profile对那个用户来说。我尝试使用Buildhas_one但那是爆炸了。我认为这种工作的唯一方法就是使用has_manyuser最多只能有一个profile

我一直在尝试这个。我有:

class User < ActiveRecord::Base
  has_one :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

但当我这么做的时候:

user.build_profile 

我知道错误:

ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'profiles.user_id' in 'where clause': SELECT * FROM `profiles` WHERE (`profiles`.user_id = 4)  LIMIT 1

Rails中是否有0或1关联的方法?

提问于
用户回答回答于

build方法签名对于has_onehas_many协会。

class User < ActiveRecord::Base
  has_one :profile
  has_many :messages
end

的生成语法has_many协会:

user.messages.build

的生成语法has_one协会:

user.build_profile  # this will work

user.profile.build  # this will throw error
用户回答回答于

需要创建一个迁移,该迁移将user_id列到配置文件表。Rails期望它在那里,如果不是,就不能访问配置文件。

扫码关注云+社区