シンプルなプライベート メッセージング プラグイン ( https://github.com/jongilbraith/simple-private-messages ) をインストールしましたが、user.name (user.login ではない) を使用してこれを機能させようとすると、いくつかの問題が発生しました。エラーメッセージは表示されませんが、送信されたメッセージが受信されておらず、「送信済み」の下に何も表示されていないようです。
まず、ユーザーのスキーマは次のとおりです
create_table "users", :force => true do |t|
t.string "name"
t.string "email"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "password_digest"
t.string "remember_token"
メッセージのスキーマ
create_table "messages", :force => true do |t|
t.integer "sender_id"
t.integer "recipient_id"
t.boolean "sender_deleted", :default => false
t.boolean "recipient_deleted", :default => false
t.string "subject"
t.text "body"
t.datetime "read_at"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
メッセージコントローラークラス MessagesController < ApplicationController
before_filter :set_user
def index
if params[:mailbox] == "sent"
@messages = @user.sent_messages
else
@messages = @user.received_messages
end
end
def show
@message = Message.read_message(params[:id], current_user)
end
def new
@message = Message.new
if params[:reply_to]
@reply_to = @user.received_messages.find(params[:reply_to])
unless @reply_to.nil?
@message.to = @reply_to.sender.name
@message.subject = "Re: #{@reply_to.subject}"
@message.body = "\n\n*Original message*\n\n #{@reply_to.body}"
end
end
end
def create
@message = Message.new(params[:message])
@message.sender = @user
@message.recipient = User.find_by_name(params[:message][:to])
if @message.save
flash[:notice] = "Message sent"
redirect_to user_messages_path(@user)
else
render :action => :new
end
end
def delete_selected
if request.post?
if params[:delete]
params[:delete].each { |id|
@message = Message.find(:first, :conditions => ["messages.id = ? AND (sender_id = ? OR recipient_id = ?)", id, @user, @user])
@message.mark_deleted(@user) unless @message.nil?
}
flash[:notice] = "Messages deleted"
end
redirect_to :back
end
end
private
def set_user
@user = User.first
end
end
メッセージ モデル
class Message < ActiveRecord::Base
attr_accessible :to, :subject, :body
is_private_message
attr_accessor :to
end
メッセージ index.html.erb
<%= form_tag delete_selected_user_messages_path(@user, :method => :post) do %>
<% if params[:mailbox] == "sent" %>
<%= render :partial => "sent" %>
<% else %>
<%= render :partial => "inbox" %>
<% end %>
<% end %>
Messages sent.html.erb
<h2>Sent</h2>
<table>
<tr>
<th>Del?</th>
<th>Subject</th>
<th>To</th>
<th>Sent</th>
</tr>
<% if @messages.size == 0 %>
<tr>
<td colspan="4">
No messages
</td>
</tr>
<% else %>
<% for message in @messages %>
<tr>
<td><%= check_box_tag "delete[]", message.id %></td>
<td><%= link_to h(message.subject), user_message_path(@user, message) %></td>
<td><%= link_to h(message.recipient.login), user_path(message.recipient) %></td>
<td><%=h message.created_at.to_s(:long) %></td>
</tr>
<% end %>
<tr>
<td colspan="4">
<%= submit_tag "Delete" %>
</td>
</tr>
<% end %>
</table>
<%= link_to "Inbox", user_messages_path(@user)%>
私は何か間違ったことをしましたか?これに関するヘルプは大歓迎です。