私はprogram
テーブルを持っています。belongs_to userprofile
とuserprofile
テーブルはhas_many programs
です。プログラムにはprogram_yearカラムがあり、ユーザーが複数のプログラムを所有している場合は、そのプログラムのうち最も早い年(そのprogram_yearの値)を表示したかったのです。ユーザーが所属するプログラムの最古の年(値)を表示する方法を教えてください。
私は同様の質問と回答(How to get earliest and latest dates for associated objects)を探しました。しかし、私のディスプレイが適切に動作するように見えることはできません。
各userprofileのプログラムから最低限のprogram_yearを取得する方法がわかりません。私が今持っているコードは、現在のユーザーの最小program_yearを返します。それはループしているからです。年xの時間を表示します。
members_controller.rb
def index
@userprofiles = Userprofile.all
# the use of current_user is incorrect..
@member_program = Uprogram.where(:userprofile_id => current_user.userprofile.id).all
@member_since = @member_program.min
end
index.html.erb
<% f.uprograms.each do |program| %>
<% if program.present? %>
<!-- just want to display the lowest program_year value)
Member since: <%= program.program_year %>
<%= @member_since.program_year %>
<% end %>
<% end %>
任意の洞察力が役立つだろう!ありがとうございました。アイデアの
あなたはmysqlグループ 'Userprofile.joins(:uprograms).group(:userprofile_id).select(" user_profile。*、min(program_year)as member_since ")を使ってこのように試すことができます。 –
@VishalJAINねえ、これを完全に理解するかどうか分からない。このコードは、プログラムとuserprofileテーブルをidで結合しますか?それから、member_sinceとしてuserprofileに基づいてprogram_yearの分を返します。それはmembers_controllerに属し、変数に格納されますか?その後、表示されますか?申し訳ありませんが、多くの質問があります.. – teresa