gpt4 book ai didi

ruby-on-rails - 在 1 个 View 中显示 2 个模型的数据

转载 作者:行者123 更新时间:2023-12-01 11:58:01 26 4
gpt4 key购买 nike

我有 2 个模型:AvailableDates --> belongs_to :spec 和 Spec --> has_many :available_dates现在我有一个 View ,我想在其中显示来自 Spec 和 AvailableDates 的具有相同 friend_id 属性的数据。我可以使用 SQL 执行此操作,效果很好:

@invitees = AvailableDate.find_by_sql "SELECT d.friend_id, s.first_name, s.last_name, s.gender, s.birthdate, s.occupation, s.country, s.city FROM available_dates d, specs s WHERE d.friend_id = s.friend_id AND d.city = 'London'

View 将如下所示,包含来自两个模型的数据:

    <% @invitees.each do |invitee| %>
<tr>
<td><%=h invitee.first_name %></td>
<td><%=h invitee.last_name %></td>
<td><%=h invitee.gender %></td>
<td><%=h invitee.birthdate %></td>
</tr>
<% end %>

但是,这感觉不像“rails like”,所以我想这样做,同时保持 View 中的代码不变:

@invitees = AvailableDate.find(:all, :conditions => ["country = ? and city = ? and start_date <= ? and end_date >= ?", country, city, date, date])

# Retrieve spec data for every matching invitee
@invitees.each do |invitee|
@spec = Spec.find(:first, :conditions => ["friend_id = ?", invitee.friend_id])
end

有没有人有更好的解决方案?谢谢!

更新:我现在有了这个可以工作的:

@invitees = Friend.find(:all, :include => [:available_date, :spec], :conditions => ["specs.country = ?", "United Kingdom"])

但它只给我 friend 的数据。我还如何从关联的 available_date 和规范中获取数据?

最佳答案

您可能想对 ActiveRecord 的 find 方法使用 joinsinclude 参数。看看 API documentation对于 findRailscasts episode这解释了两者之间的区别。

关于ruby-on-rails - 在 1 个 View 中显示 2 个模型的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com