Дизайн модели не верный.Как насчет:
class Message < ActiveRecord::Base
belongs_to :sender, :class_name => "User"
belongs_to :receiver, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :sent_messages, :class_name => "Message", :foreign_key => "sender_id"
has_many :received_messages, :class_name => "Message", :foreign_key => "receiver_id"
end
А контроллер прост (вам нужно задать params [: message] [: sender_id] и params [: message] [: receive_id] из формы):
def create
@message = Message.create(params[:message])
...
end
Но вы, вероятно, не хотите, чтобы пользователь вмешивался в личность отправителя, поэтому:
def create
@message = current_user.sent_messages.create(params[:message])
...
end