Activerecord 如何在Rails中从另一个模型读取属性 我仍然认为自己是新手。我正在Rails应用程序中实现一个SMS功能,提醒客户即将进行的约会。我的问题是,我的约会模型中有SMS方法,但我的客户端模型是phone属性所在的位置。如何从约会模型调用我的电话属性
这是我的预约模式Activerecord 如何在Rails中从另一个模型读取属性 我仍然认为自己是新手。我正在Rails应用程序中实现一个SMS功能,提醒客户即将进行的约会。我的问题是,我的约会模型中有SMS方法,但我的客户端模型是phone属性所在的位置。如何从约会模型调用我的电话属性,activerecord,ruby-on-rails-5,Activerecord,Ruby On Rails 5,这是我的预约模式 class Appointment < ApplicationRecord enum status: { confirmed: 0, rescheduled: 1, cancelled: 2} belongs_to :user belongs_to :client validates :start_time, presence: true validates :end_time, presence: true after_create :remi
class Appointment < ApplicationRecord
enum status: { confirmed: 0, rescheduled: 1, cancelled: 2}
belongs_to :user
belongs_to :client
validates :start_time, presence: true
validates :end_time, presence: true
after_create :reminder
def reminder
@twilio_number = ENV['TWILIO_NUMBER']
account_sid = ENV['TWILIO_ACCOUNT_SID']
@client = Twilio::REST:Client.new account_sid, ENV['TWILIO_AUTH_TOKEN']
time_str = ((self.start_time).localtime).strftime("%I:%M%p on %b. %d, %Y")
reminder = "Hi #{client.name}. Just a reminder that you have an appointment coming up at #{time_str}."
message = @client.api.account(account_sid).messages.create(
:from => @twilio_number,
:to => client.phone_number,
:body => reminder,
)
end
以及
:to => client.phone_number
要访问电话号码属性?是的,您的假设是正确的,您只需拨打
客户端即可。。我引用了一个TL;博士摘录如下
我大致总结一下我使用这些方法的方法,如下所示:
如果我只是在筛选,请使用联接。
如果我要访问关系,请从包含开始。
如果使用两个单独的查询时include很慢,我将使用eager_load强制执行单个查询并比较性能
当通过ActiveRecord访问关系时,存在许多边缘情况。希望这足以防止在使用联接、包含、预加载和预加载时出现一些更基本的性能瓶颈
按照那篇文章的建议,我们将我的示例改写为
Appointment.all.includes(:client).each do {|a| a.reminder }
我刚看到这个。谢谢你的帮助,安德鲁!
:to => client.phone_number
Appointment.all.each do {|a| a.reminder }
Appointment.all.includes(:client).each do {|a| a.reminder }