在我的应用中,用户有对话,对话有消息。消息既属于用户(作为作者)又属于对话。
我想创建一个新消息。这是我现在在MessagesController中使用的代码。
def new
@user = current_user #currently logged in user
@conversation = Conversation.find(params[:id])
@message = @conversation.messages.build
end
def create
@conversation = Conversation.find(params[:conversation_id])
@message = @conversation.messages.build(params[:message])
if @message.save
redirect_to username_conversation(current_user, @message.conversation)
else
redirect_to root_url
end
end
params [:message]包含消息内容(“content”=>“我是斯巴达克斯”)。
这不起作用(可能是因为我在创建新消息时没有指定用户/作者?)。如何使这项工作成为Rails方式?
感谢。
答案 0 :(得分:3)
您需要手动设置用户。只能使用Rails提供的简短方法设置一个属性。
def new
@user = current_user #currently logged in user
@conversation = Conversation.find(params[:id])
@message = @conversation.messages.build
@message.user = user
end
def create
@conversation = Conversation.find(params[:conversation_id])
@message = @conversation.messages.build(params[:message])
@message.user = current_user
if @message.save
redirect_to username_conversation(current_user, @message.conversation)
else
redirect_to root_url
end
end