参数错误:未知密钥::来自

时间:2014-05-20 20:10:04

标签: ruby-on-rails

我正在尝试在rails中创建消息。但是当我在rails控制台中运行Message.new时,我得到了:

ArgumentError: Unknown key: :from. Valid keys are: :class_name, :class, :foreign_key, :validate ... etc

我的设置如下:

用户模型

  has_many :messages
  has_many :message_recipients, :as => :recipient, :dependent => :destroy
  has_many :received_messages, :through => :message_recipients

消息模型

  belongs_to :user
  has_many :message_recipients, :dependent => :destroy
  has_many :recipients, :through => :message_recipients, :class_name => "User", :from => :recipient

Message_Recipient模型

  belongs_to :message
  belongs_to :recipient, :class_name => "User", :foreign_key => :recipient_id

感谢您的任何建议或帮助。

3 个答案:

答案 0 :(得分:2)

它告诉你:from不是这一行中的有效选项:

has_many :recipients, :through => :message_recipients, :class_name => "User", :from => :recipient

你应该能够移除那部分。

有关有效选项,请参阅has_many的文档。

<强>更新

在此行的语法中,:fromhas_many宏/方法的选项哈希中的键。但是has_many方法正在检查传入的选项,并警告您传入的内容是否未知。这就是:from将是一个未知的选择。即Rails不知道如何处理它。所以它无效,只是不应该在那里。

答案 1 :(得分:1)

Message模型中,在定义与recipients的has_many关联时,您已通过:from选项,该选项不是has_many方法的有效密钥,这就是您收到的原因错误为

ArgumentError: Unknown key: :from. Valid keys are: :class_name, :class, :foreign_key, :validate ... etc

Message模型中

has_many :recipients, :through => :message_recipients, :class_name => "User", 
         :from => :recipient
         ## ^^ 
         ## Remove this

以下是您可以传递给 has_many association

的所有有效选项的参考资料

答案 2 :(得分:0)

:from 不是Message模型中使用的has_many关系中的有效选项。这就是为什么你会收到参数错误。

的问题