Rails 中的消息关联
Messaging Associations in Rails
我正在创建一个 Rails 消息传递应用程序(使用 Twilio,我想这不是超级相关的)具有以下模型:
- 联系人
- Phone 数字
- 消息
联系人有很多 Phone 个号码,很简单。
Messages 有很多 phone 个号码,只是不多,刚好是两个。从和到。
我希望能够拨打以下电话:
@message.from.contact
以下是我考虑过的一些方法:
我找到了 the answer to this prior question。如果这是这样做的方式,我不确定正确的迁移是什么让消息 table 具有必要的列。我是否需要通过添加列和外键来迁移?试过了,卡住了。
我想到的另一种方法是创建一个包含 "from" 或 "two." 的字符串属性的联接 table 我假设然后我需要创建我自己的 Message.from 方法,在某些字符串中搜索 message_phone_numbers 和 "from"?感觉很笨重。
或第三种可能的方式...具有加入信息的 FromPhoneNumber class 和 ToPhoneNumber class。
我知道我没有发布任何代码。我已经完成了一些迁移和回滚,现在回到原点...
感谢您的帮助。我是 Stack Overflow 的新手,也是 Rails 的新手,所以您的帮助意义重大!
是的,您的第一个要点是正确答案。对于您的 Message 模型,属性 from_id
和 to_id
都引用特定的 phone 数字。我已经推断出您的模型名称,因此您可能需要更正这些名称,但总而言之:
迁移应如下所示:
add_column :messages, :from_id, :integer
add_column :messages, :to_id, :integer
消息 class 应如下所示:
belongs_to :from_phone_number, class_name: 'PhoneNumber'
belongs_to :to_phone_number, class_name: 'PhoneNumber'
PhoneNumber class 应如下所示:
has_many :sent_messages, class_name: 'Message', foreign_key: 'from_id'
has_many :received_messages, class_name: 'Message', foreign_key: 'to_id'
您可以在消息中删除一些方法 class 以提供您正在寻找的速记方法:
def from
from_phone_number
end
在我看来,仅将 from
作为模型本身的属性并没有很好的描述性,可能意味着用户或 phone 号码。
我正在创建一个 Rails 消息传递应用程序(使用 Twilio,我想这不是超级相关的)具有以下模型:
- 联系人
- Phone 数字
- 消息
联系人有很多 Phone 个号码,很简单。
Messages 有很多 phone 个号码,只是不多,刚好是两个。从和到。
我希望能够拨打以下电话: @message.from.contact
以下是我考虑过的一些方法:
我找到了 the answer to this prior question。如果这是这样做的方式,我不确定正确的迁移是什么让消息 table 具有必要的列。我是否需要通过添加列和外键来迁移?试过了,卡住了。
我想到的另一种方法是创建一个包含 "from" 或 "two." 的字符串属性的联接 table 我假设然后我需要创建我自己的 Message.from 方法,在某些字符串中搜索 message_phone_numbers 和 "from"?感觉很笨重。
或第三种可能的方式...具有加入信息的 FromPhoneNumber class 和 ToPhoneNumber class。
我知道我没有发布任何代码。我已经完成了一些迁移和回滚,现在回到原点...
感谢您的帮助。我是 Stack Overflow 的新手,也是 Rails 的新手,所以您的帮助意义重大!
是的,您的第一个要点是正确答案。对于您的 Message 模型,属性 from_id
和 to_id
都引用特定的 phone 数字。我已经推断出您的模型名称,因此您可能需要更正这些名称,但总而言之:
迁移应如下所示:
add_column :messages, :from_id, :integer
add_column :messages, :to_id, :integer
消息 class 应如下所示:
belongs_to :from_phone_number, class_name: 'PhoneNumber'
belongs_to :to_phone_number, class_name: 'PhoneNumber'
PhoneNumber class 应如下所示:
has_many :sent_messages, class_name: 'Message', foreign_key: 'from_id'
has_many :received_messages, class_name: 'Message', foreign_key: 'to_id'
您可以在消息中删除一些方法 class 以提供您正在寻找的速记方法:
def from
from_phone_number
end
在我看来,仅将 from
作为模型本身的属性并没有很好的描述性,可能意味着用户或 phone 号码。