首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails:在rails中使用带有has_one关联的构建

Rails:在rails中使用带有has_one关联的构建
EN

Stack Overflow用户
提问于 2010-03-19 04:01:53
回答 2查看 81.4K关注 0票数 150

在本例中,我创建了一个不带profileuser,然后为该用户创建了一个profile。我尝试将build与has_one关联一起使用,但是失败了。我认为唯一有效的方法就是使用has_manyuser应该最多只有一个profile

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

代码语言:javascript
复制
class User < ActiveRecord::Base
  has_one :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

但当我这么做的时候:

代码语言:javascript
复制
user.build_profile 

我得到了错误:

代码语言:javascript
复制
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的关联?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-19 05:00:38

has_onehas_many关联的build方法签名是不同的。

代码语言:javascript
复制
class User < ActiveRecord::Base
  has_one :profile
  has_many :messages
end

has_many关联的构建语法:

代码语言:javascript
复制
user.messages.build

has_one关联的构建语法:

代码语言:javascript
复制
user.build_profile  # this will work

user.profile.build  # this will throw error

有关更多详细信息,请阅读has_one关联documentation

票数 377
EN

Stack Overflow用户

发布于 2010-03-19 04:45:14

它应该是一个has_one。如果build不工作,您可以直接使用new

代码语言:javascript
复制
ModelName.new( :owner => @owner )

等同于

代码语言:javascript
复制
@owner.model_names.build
票数 -14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2472982

复制
相关文章

相似问题

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