난 내 레일 애플 리케이션에 내장 된 간단한 메시징 시스템이 있습니다.레일 4-- 사용자 예상, 문자열이
표는 다음과 같습니다
create_table :messages do |t|
t.integer :from_id
t.integer :to_id
t.string :subject
t.text :message
t.timestamps
end
모델도 간단하다
belongs_to :to_id, class_name: "User", :foreign_key => "to_id"
belongs_to :from_id, class_name: "User", :foreign_key => "from_id"
내가하려고하면 메시지 양식 그러나, 나는 type mismatch
을 받고, 그리고하고 제출하면 레일즈 콘솔에 새 메시지를 작성하면 동일한 오류가 발생합니다.
User(#-588576898) expected, got String(#-603326958)
은 분명히 단순히 user.id
값이 아닌 User
객체를 기대하고있다. 이 모델을 만든 방법에 오류가 있다고 가정합니다.
어디서 잘못 되었나요?
편집 :
양식 코드는 다음과 같습니다. 그러나, 레일 콘솔에서 직접 Message
를 만들 때 저도 같은 문제가 발생하고 있습니다, 그래서 나는이 모델의 가정입니다 :
<%= form_for @message, :url => {:controller => "messages", :action => "create"}, :html => {:class => 'form-horizontal form', :role => 'form'} do |f| %>
<%= f.select :to_id, options_from_collection_for_select(User.all, :id, :first_name) %>
<%= f.text_field :subject %>
<%= f.text_area :message %>
<%= f.submit class: "btn btn-large btn-primary" %>
<% end %>
: 여기
> m = Message.new
=> #<Message id: nil, from_id: nil, to_id: nil, subject: nil, message: nil, created_at: nil, updated_at: nil>
> m.from_id = 1
ActiveRecord::AssociationTypeMismatch: User(#-582821898) expected, got Fixnum(#-597136528)
는 라벨과 HTML을 제거, 폼의
콘솔이나 양식으로 메시지를 작성하는 방법을 우리에게 알려주지 않았습니다. 어떻게 잘못되었는지 알 수 있습니까? –
예, 질문에 메시지 양식을 추가하십시오. –