Ошибка аргумента: неизвестный ключ:: от
Я пытаюсь создавать сообщения в рельсах. Но когда я запускаю Message.new в консоли rails, я получаю:
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
Модель сообщения-получателя
belongs_to :message
belongs_to :recipient, :class_name => "User", :foreign_key => :recipient_id
Спасибо за любой совет или помощь.
3 ответа
Это говорит вам, что :from
недопустимый параметр в этой строке:
has_many :recipients, :through => :message_recipients, :class_name => "User", :from => :recipient
Вы должны просто быть в состоянии удалить эту часть.
Действительные параметры см. В документации по has_many
,
ОБНОВИТЬ
В синтаксисе этой строки :from
ключ в хэше опций has_many
макро / метод. Но has_many
Метод проверяет переданные параметры и предупреждает вас, если что-то, что вы передаете, неизвестно. Это то что :from
будет - неизвестный вариант. Т.е. Rails понятия не имеет, что с этим делать. Так что это недействительно и просто не должно быть там.
В Message
модель, определяя связь has_many с recipients
Вы прошли :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
:from не является допустимым параметром в отношении has_many, используемом в модели сообщений. Вот почему вы получаете проблему ошибки аргумента.