首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过自引用关联创建实例

通过自引用关联创建实例
EN

Stack Overflow用户
提问于 2014-04-04 23:37:02
回答 1查看 42关注 0票数 1

我是不是漏掉了什么?

话语模式:

代码语言:javascript
复制
class Discourse < ActiveRecord::Base        
    #<Discourse id:, user_id: , sub_discourse_id: , title: , body: , deleted: , delete_date: , created_at:, updated_at: >   
    has_many :discourse_replies
    has_many :replies, through: :discourse_replies 
end

DiscourseReply模型:

代码语言:javascript
复制
class DiscourseReply < ActiveRecord::Base
    belongs_to :discourse
    belongs_to :reply, class_name: 'Discourse' 
end

控制台:

代码语言:javascript
复制
Loading development environment (Rails 4.0.2)
2.0.0p247 :001 > fd = Discourse.create(title: 'first', body: 'first')
 => #<Discourse id: 5, user_id: nil, sub_discourse_id: nil, title: "first", body: "first", deleted: nil, delete_date: nil, created_at: "2014-04-04 23:32:13", updated_at: "2014-04-04 23:32:13"> 
2.0.0p247 :002 > fd.discourse_replies
 => #<ActiveRecord::Associations::CollectionProxy []> 
2.0.0p247 :004 > fd.create_discourse_reply
NoMethodError: undefined method 'create_discourse_reply' for #<Discourse:0x00000003396450>
2.0.0p247 :004 > fd.discourse_replies.build(title: "reply to first", body: "reply to first")
ActiveRecord::UnknownAttributeError: unknown attribute: title

简而言之,为什么create_discourse_reply是一个未定义的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 23:43:55

您已经为has_many定义了discourse_replies关联,因此要创建需要执行的关联对象

代码语言:javascript
复制
fd.discourse_replies.create

如果您将fd.create_discourse_replyhas_onebelongs_to关联关联起来,那么它将被创建为对象。

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

https://stackoverflow.com/questions/22874733

复制
相关文章

相似问题

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