前回この「Rails4でメッセージ送信先のユーザー名を表示したい 」と質問させていただきました。
ご回答を元に以下の手順でユーザーメッセージアプリを作成いたしました。
lang
1rails g model User name:string message:string 2rails g model Message user_id:integer message:string post_to_id:integer
上記のようにUserモデルとMessageモデルを作成しました。
作成したそれぞれのモデルを以下のコードを追加しテーブルの関連付けをしました。
Userモデル
lang
1has_many :messages
Messageモデル
lang
1belongs_to :users 2belongs_to :user_id, class_name: "User",foreign_key: "user_id" 3belongs_to :post_to_id, class_name: "User",foreign_key: "post_to_id"
usersコントローラー内に以下のメソッドを追加(この「current_user」はすでにRuby on Railsのチュートリアルでログイン機能を実装済みのため作動するものとします。)
lang
1@send_messages = Message.where("user_id=?",current_user.id).preload(:post_to_id) if signed_in?
view側を以下のようにしました
app/views/users/message.html.erb
lang
1<% @send_messages.each do |msg| %> 2<li>送信日時:<%= msg.created_at %></li> 3<li>message内容:<%= msg.message %></li> 4<li>送り先id:<%= msg.post_to_id %></li> 5<li>送り先ユーザー名<%= <%= msg.post_to_id.name %> %></li> 6<% end %>
おかげさまで送り先のユーザー名を上記の手順で実装することに成功しました。
しかし今度はMessageモデルへデータが挿入できないというトラブルに遭遇してしまいました。
lang
1rails c
でコンソールを立ち上げ
lang
1message=Message.new 2message.user_id=1
と入力したところ
lang
1ActiveRecord::AssociationTypeMismatch:
とエラーが表示され、データを挿入できなくなってしまいました。
どうすればMessageモデルへデータを挿入できるようになりますでしょうか?
初歩的な質問で凝縮ですがよろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2014/10/24 21:36
退会済みユーザー
2014/10/26 01:27