मैं एक स्पष्ट रेल 4 उदाहरण चाहता हूं कि किसी अन्य तालिका के माध्यम से उनके द्वारा जुड़े डेटा के आधार पर रिकॉर्ड कैसे फ़िल्टर करें।रेल क्वेरी: किसी अन्य तालिका में गुणों द्वारा फ़िल्टर करें
मान लीजिए मेरे पास एक उपयोगकर्ता मॉडल और एक टिप्पणी मॉडल है। उपयोगकर्ता has_many
टिप्पणियां, और एक टिप्पणी belongs_to
उपयोगकर्ता। एक टिप्पणी में इसकी तालिका में score
कॉलम भी है।
class User < ActiveRecord::Base
has_many :comments
end
Users
| id | name | email |
|-----|---------|---------------------|
| 1 | "Alice" | "[email protected]" |
| 2 | "Bob" | "[email protected]" |
| ... |
class Comment < ActiveRecord::Base
belongs_to :user
end
Comments
| id | score | content | user_id |
|-----|-------|------------------|---------|
| 1 | 0 | "lol" | 2 |
| 2 | 2 | "more like love" | 3 |
| ... |
मैं कैसे सभी उपयोगकर्ताओं है कि सामग्री "कश्मीर" स्कोर> 0 है के साथ एक टिप्पणी बना दिया है प्राप्त होगा? ध्यान दें कि मैं जो वापस करना चाहता हूं वह उपयोगकर्ता है, टिप्पणियां नहीं।
इसके अलावा, एक अधिक जटिल उदाहरण पर विचार करें, जहां एक उपयोगकर्ता has_many
टिप्पणियों और पसंद करता है, टिप्पणियाँ belong_to
एक उपयोगकर्ता, और एक टिप्पणी has_many
पसंद करती है। belong_to
पसंद करता है उपयोगकर्ता और belong_to
एक टिप्पणी। ध्यान दें कि score
इस उदाहरण में अब कोई कारक नहीं है।
class User < ActiveRecord::Base
has_many :comments
has_many :likes
end
Users
| id | name | email |
|-----|---------|---------------------|
| 1 | "Alice" | "[email protected]" |
| 2 | "Bob" | "[email protected]" |
| ... |
class Comment < ActiveRecord::Base
belongs_to :user
has_many :likes
end
Comments
| id | content | user_id |
|-----|------------------|---------|
| 1 | "lol" | 2 |
| 2 | "more like love" | 3 |
| ... |
class Like < ActiveRecord::Base
belongs_to :user
belongs_to :comment
end
Likes
| id | user_id | comment_id |
|-----|---------|------------|
| 1 | 1 | 2 |
| 2 | 4 | 3 |
| ... |
इस दूसरे उदाहरण में, मैं सभी उपयोगकर्ता है जो कभी उनकी टिप्पणी से एक 'Fonzie' नाम उपयोगकर्ता द्वारा पसंद था कि कैसे मिलेगा?