我想创建一个简单的消息“线程”应用程序,如在Facebook收件箱中找到。当我在rails中创建Model的新记录时,创建相关表的更好方法是什么?
我有两个模型:Message和UserHasMessage。
当一个新的消息被创建时,有一个发送者和一个接收者。我要做的就是创建两个记录UserHasMessage看起来像这样:
| user_id | message_id | is_sender |
|sender_id| message_id | 1 |
|receiver_id| message_id | 0 |
我试图做这种方式,但不认为它看起来右:
16 def create
17 @message = Message.new(params[:message])
18 if @message.save
19 @user_has_message = UserHasMessage.new
20 @user_has_message.user_id = params[:sender_id]
21 @user_has_message.message_id = @message.id
22 @user_has_message.is_sender = 1
23 @user_has_message.save
24
25 @user_has_message = UserHasMessage.new
26 @user_has_message.user_id = params[:receiver_id]
27 @user_has_message.message_id = @message.id
28 @user_has_message.is_sender = 0
29 @user_has_message.save
30
31 flash[:notice] = "Successfully created message."
32 redirect_to @message
BTW:未参数[:receiver_id]和params [:sender_id]是从视图/ _form传递的hidden_fields ...所以我不知道它如何流入创建...
谢谢!
我该怎么做后一个建议。即使消息本身没有sender_id或receiver_id的属性,第一个建议是否也能工作(这必须存储在关联UserHasMessages中。 – Angela 2011-03-24 18:00:06
)您可以在模型上定义新的方法和属性,并使用这些方法执行其他操作通过声明“def sender_id =(myid)”,你可以像上面描述的那样调用该函数,对于后一种情况,模型关联教程可以在这里找到.http://guides.rubyonrails。组织/ association_basics.html – Joshua 2011-03-25 21:35:41