首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails :inverse_of误差

Rails :inverse_of误差
EN

Stack Overflow用户
提问于 2013-03-15 09:48:08
回答 1查看 1.5K关注 0票数 1
代码语言:javascript
复制
class User < ActiveRecord::Base
  attr_accessible :email, :password, :picture, :username
  has_many :entries, :class_name => "Entry", :inverse_of => :user

  has_many :sent_messages, :inverse_of => :sender, :class_name => "Message", :foreign_key => "sender_id"
  has_many :recieved_messages, :inverse_of => :target, :class_name => "Message", :foreign_key => "target_id"

  has_many :mails, :inverse_of => :user
  ...
end

class Message < ActiveRecord::Base
  attr_accessible :message, :seen, :title
  belongs_to :sender, class_name => "User", :inverse_of => :sent_messages
  belongs_to :target, class_name => "User", :inverse_of => :recieved_messages
end

class CreateMessages < ActiveRecord::Migration
  def change
    create_table :messages do |t|
      t.references :sender
      t.references :target
      t.string :title
      t.string :message
      t.boolean :seen

      t.timestamps
    end
  end
end

我有这两个模特。当我试图获取用户发送的消息(user.sent_messages)时,会收到如下错误:

代码语言:javascript
复制
Could not find the inverse association for sent_messages (:sender in Message)

这是我使用Rails的第二天,所以这可能很简单,但我没有看到。

PS:如果我从类用户中删除:inverse_of =>::inverse_of,user.sent_messages可以工作,但据我所知,:inverse_of很重要。

PPS:发现错误!在消息类中,我使用的是class_name而不是:class_name.

EN

回答 1

Stack Overflow用户

发布于 2013-03-15 12:45:49

这就是为什么我喜欢在可能的情况下使用新样式的散列。

代码语言:javascript
复制
class Message < ActiveRecord::Base
attr_accessible :message, :seen, :title
belongs_to :sender, class_name: 'User', inverse_of: :sent_messages
belongs_to :target, class_name: 'User', inverse_of: :recieved_messages
end

虽然和很多事情一样,这往往是个人品味的问题:)

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

https://stackoverflow.com/questions/15429122

复制
相关文章

相似问题

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