我在Postgres (0.18.3)中使用Rails (4.1.8)。与这个问题相关的是我的应用程序中的三个相关模型:
Member.rb
has_many :fitness_measurements, :dependent => :destroy
has_many :fitness_goals, :dependent => :destroy
Fitness_Measurement.rb
belongs_to :member
Fitness_Goal.rb
belongs_to :membermember_id“外键”在健身测量表和健身目标表中。
下面是一个场景:我有一个登录的“成员”。健身测量和健身目标都是以成员为范围的。在一个成员创建一个新的健身目标之前,我想要展示的是会员最近的身体测量。换句话说,我需要检索该成员的上一次记录的健身测量,并在表单上显示该记录的数据(健身目标的form.html.erb)。当我知道健身测量记录的id时,我能够检索想要的值。例如,当我将这段代码放在fitness_goals_controller.rb中时,我会将所需的值放入表单视图中。
before_action :get_fitness_measurement
private
def get_fitness_measurement
@fitness_measurement = @member.fitness_measurements.find(2)
end下面是创建一个新的健身目标(form.html.erb)的相关代码:
<p>
<li><b>Current Weight:</b> <%= @fitness_measurement.weight %></li><br>
</p>当然,问题是我并不总是知道要检索的健身测量的id。我需要帮助构建一个查询来检索登录成员的上一次适应度度量。这是我需要从健身量表上拿出来的记录。如何构造这样的查询?我阅读了活动记录查询接口( Active Record query )的文档,但仍然不知道如何正确地构造所需的查询。
在Rails控制台中,我运行了以下查询:
@fitness_measurement = FitnessMeasurement.all检索数据库中的所有适应度度量。注意:包含正确的成员ids。
@fitness_measurement = FitnessMeasurement.select('DISTINCT ON (member_id) *').order('member_id')检索由成员id排序的所有健身测量值。
@fitness_measurement = FitnessMeasurement.first检索第一个适应度度量,该度量值恰好属于登录成员。
@fitness_measurement = FitnessMeasurement.last,它检索上一次记录的适应度测量,它属于匿名成员。
我需要找到最后的健身测量,其中有登录成员的id。如何构造查询以从数据库检索特定记录?
发布于 2015-12-02 23:06:13
您可以在创建成员的时候订购成员的健身测量,并选择最后一个。
@fitness_measurement = @member.fitness_measurements.order(:created_at).last如果他们没有任何测量,你会得到零。
https://stackoverflow.com/questions/34051623
复制相似问题