ฉันกำลังพยายามสร้างแอปใน Rails 4
ฉันมีโมเดลสำหรับผู้ใช้ โปรไฟล์ และโปรเจ็กต์
สมาคมได้แก่:
User has_one :profile
Profile belongs_to :user & has_many :projects
Projects belongs_to :profile.
ในหน้าแสดงโปรไฟล์ของฉัน ฉันกำลังพยายามแสดงโครงการที่เป็นของโปรไฟล์
ฉันได้ลองเขียนขอบเขตในแบบจำลองโครงการของฉันเป็น:
scope :by_profile, lambda { | profile_id | where(:profile_id => profile_id) }
จากนั้น ในหน้าแสดงโปรไฟล์ของฉัน ฉันได้ลองใช้ขอบเขตดังกล่าวเป็น:
<% Project.by_profile.sort_by(&:created_at).in_groups_of(3) do |group| %>
<div class="row">
<% group.compact.each do |project| %>
<div class="col-md-4">
<div class="indexdisplay">
<%= image_tag project.hero_image_url, width: '80px', height: '80px' if project.hero_image.present? %>
<br><span class="indexheading"> <%= link_to project.title, project %> </span>
</div>
</div>
<% end %>
<% end %>
</div>
ฉันยังใหม่กับขอบเขตและยังคงพยายามที่จะเข้าใจว่าสิ่งต่าง ๆ ทำงานอย่างไร ฉันแปลกใจเล็กน้อยที่ถ้าฉันแทนที่ 'by_profile' ด้วย 'all' มันจะแสดงอาร์เรย์ของโปรเจ็กต์จริง ๆ (ฉันคิดว่าทุกโปรเจ็กต์ ไม่ใช่แค่โปรเจ็กต์ที่สร้างโดย id โปรไฟล์สำหรับหน้าโปรไฟล์ที่เกี่ยวข้อง)
ไม่มีใครรู้วิธีการเขียนขอบเขต? มีบางอย่างที่ฉันควรทำในตัวควบคุมโปรไฟล์เพื่อช่วยในการทำงานนี้หรือไม่
Project.where(profile_id: 1)
? - person Hieu Pham   schedule 04.02.2016