这里的第一次提问者......一般是Rails和数据建模的新手。
我可以找到最接近答案的in this post,但是,我很难将其转换为我正在处理的应用程序流程。
一般流程如下:
我的问题特定于用户向群组发送消息。
基于上面提到的链接,这是我如何建模ActiveRecords
#app/models/user.rb
class User < ActiveRecord::Base
has_many :groups
has_many :sent_messages, class_name: "Message", foreign_key: "sender_id"
end
#app/models/message.rb
class Message < ActiveRecord::Base
belongs_to :recipient, class_name: "User", foreign_key: "recipient_id"
belongs_to :sender, class_name: "Group", foreign_key: "sender_id"
end
#app/models/group.rb
class Group < ActiveRecord::Base
belongs_to :user
has_many :messages, class_name "Message", foreign_key: "recipient_id"
end
我的问题是,一般来说这是正确的做法吗?我意识到(我认为)最佳实践是分离一般流程类型(例如,创建组,发送消息,管理组成员等)...但是可以在Message模型中分叉外键,以便他们指向一个用户而另一个指向群组?