2013-10-31 6 views
6
class Guardian < ActiveRecord::Base 
    has_many :patients 
    has_one :user, as: :profile 
    accepts_nested_attributes_for :user 
end 


class User < ActiveRecord::Base 
    belongs_to :profile, :polymorphic => true 

    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

उपयोगकर्ता प्रवासदो तालिकाओं डेटा रेल पाने के लिए शामिल होने के 4

class DeviseCreateUsers < ActiveRecord::Migration 
    def change 
    create_table(:users) do |t| 
     ## Database authenticatable 
     t.string :email,    :null => false, :default => "" 
     t.string :encrypted_password, :null => false, :default => "" 
     t.string :username, :null => false 
     t.string :address 
     t.integer :age 
     t.string :gender 
     t.string :name 
     t.integer :profile_id 
     t.string :profile_type 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     t.integer :sign_in_count, :default => 0, :null => false 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 


     t.timestamps 
    end 

    add_index :users, :email,    :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    end 
end 

class DeviseCreateUsers < ActiveRecord::Migration 
    def change 
    create_table(:users) do |t| 
     ## Database authenticatable 
     t.string :email,    :null => false, :default => "" 
     t.string :encrypted_password, :null => false, :default => "" 
     t.string :username, :null => false 
     t.string :address 
     t.integer :age 
     t.string :gender 
     t.string :name 
     t.integer :profile_id 
     t.string :profile_type 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     t.integer :sign_in_count, :default => 0, :null => false 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 
     t.timestamps 
    end 

    add_index :users, :email,    :unique => true 
    add_index :users, :reset_password_token, :unique => true 
    end 
end 

गार्जियन प्रवास

class CreateGuardians < ActiveRecord::Migration 
    def change 
    create_table :guardians do |t| 
     t.string :family_name 

     t.timestamps 
    end 
    end 
end 

मैं एक में उपयोगकर्ता की मेज और अभिभावक तालिका से डेटा प्राप्त करना चाहते हैं एकल चर अभिभावक के पास एक उपयोगकर्ता और उपयोग है प्रोफाइल के रूप में अभिभावक से संबंधित है (polymorphic)। मैं उपयोगकर्ता मेज से और अभिभावक तालिका से डेटा प्राप्त करना चाहते हैं जहां guardian_id = users.profile_id

+0

यह मेरा पहला प्रश्न इंडेंटेशन के लिए खेद है। –

+0

टिप्पणी कोड जोड़ने से बचें, यह सिर्फ शोर जोड़ता है। –

उत्तर

14

प्रयास करें

Guardian.select("*").joins(:user) 

संपादित करें:

आप से इस नाम के कॉलम है, तो आपसे जुड़ सकते हैं

Guardian.select("guardians.family_name, guardians.id as g_id, users.id as u_id, 
    users.name, users.email, users.username, users.address, users.age, 
    users.gender").joins(:user).where(:users => {:u_id => @user_session.id}) 
+0

हाँ जो काम किया। लेकिन अगर मैं उपयोगकर्ता और अभिभावक के कुछ विशेषताओं को चाहता हूं। (केवल अभिभावक और आईडी से परिवार_नाम, उपयोगकर्ता से नाम)? –

+0

जांचें http://stackoverflow.com/a/15824511/643500 –

+0

अभिभावक। चयन करें ("अभिभावक। *, User.id user_id के रूप में")। जोड़ता है (: उपयोगकर्ता) .having ("user_id = (उन उपयोगकर्ताओं से आईडी का चयन करें आईडी = guardians.id आईडी अवर सीमा द्वारा आदेश 1) ") यह शून्य वस्तु वापस कर रहा है। गलती क्या है :( –

0

उत्तर के किसी कारण से उत्तर मेरे लिए काम नहीं करता है, इसलिए मैं प्रत्यक्ष एसक्यूएल क्वेरी

sqlQuery = "select tableA.column1, tableB.column2 from tableA inner join tableB on tableA.some_id = tableB.id" 
ActiveRecord::Base.connection.execute(sqlQuery) 
संबंधित मुद्दे