에 가입하여 기록을 수집 내가 가지고있는 두 테이블루비 - Datamapper - 두 모델
users
-------
id
name
organization_id
organizations
----------
id
org_name
org_unique_num
abc
xyz
organization_id
사용자 테이블 조직 테이블의 ID에 대한 외부 키
class Organization
include DataMapper::Resource
property :id, Serial
property :org_name, String
property :org_unique_num, Integer
property :abc String
property :xyz String
has n, :users
end
class User
include DataMapper::Resource
property :id, Serial
property :name, String
property :organization_id, Integer
property :age, Integer
belongs_to :organization
end
내가 함께 사용자의 기록을 잡아 할 것입니다 사용자의 나이가 25 이상인 조직 테이블에 합류합니다. 결과는 다음과 같습니다.
user_id name organization_id org_name org_unique_num age
12 John 356 ATT 76763 38
35 Lisa 981 IBM 2376 28
그럼 어떻게해야합니까? 내가 abc와 xyz 열을 결과에 넣고 싶지 않다는 것에주의하십시오.
User.all(:age.gt => 25)
이것은 단지 나에게 나이> 25 사용자를 줄 것이다,하지만 난뿐만 아니라 사용자의 조직 정보를 잡고 싶다. 그것은 하나의 진술을 할 수 있습니까? 또는 여러 단계로 수행해야합니다. 모든 user_id를 수집 한 다음 id가() 인 조직 모델에 전달하면 추한 것입니다.
도움이 될 것입니다.
@ silvu까지 요청한 경우에만 데이터를 가져옵니다. 그것은 효과가 있었다. 그건 그렇고, 조직을 "eager-load"로 유지할 수있는 방법이 있습니까? – JVK
User 클래스에 메소드를 작성하면 어떨까요? 예 : 'def getwithorg 쿼리 finalhash = {} r = 모두 (쿼리) r.each do | user | finalhash [user.id = user.organization.org_name ..... 단부 finalhash end' – JVK
또는 monkeypath'상기 방법 all' 방법. 무엇을 당신은 – JVK