Raylardan istediğiniz sütunları nasıl elde edeceğimi anlamıyorum. İki modelim var - Bir Kullanıcı ve Bir Profil. Bir kullanıcı: (Kullanıcıların profil önceki bir sürümüne geri dönebilirsiniz çünkü) Has_many Profili:Raylar Katılır ve birleşimler tablosundan sütunlar ekleyin
> SELECT * FROM profiles JOIN users ON profiles.user_id = users.id LIMIT 1;
+----+-----------+----------+---------------------+---------+---------------+-----+
| id | username | password | last_login | user_id | first_name | ... |
+----+-----------+----------+---------------------+---------+---------------+-----+
| 1 | john | ****** | 2010-12-30 18:04:28 | 1 | John | ... |
+----+-----------+----------+---------------------+---------+---------------+-----+
:
> DESCRIBE users;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| username | varchar(255) | NO | UNI | NULL | |
| password | varchar(255) | NO | | NULL | |
| last_login | datetime | YES | | NULL | |
+----------------+--------------+------+-----+---------+----------------+
> DESCRIBE profiles;
+----------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | NO | MUL | NULL | |
| first_name | varchar(255) | NO | | NULL | |
| last_name | varchar(255) | NO | | NULL | |
| . . . . . . |
| . . . . . . |
| . . . . . . |
+----------------+--------------+------+-----+---------+----------------+
SQL, ben sorguyu çalıştırabilirsiniz
BOTH tabloları için tüm sütunları nasıl bir araya getirdiğimi görün? Ben Rails bu aynı sorguyu çalıştırdığınızda, ancak, istediğim tüm sütunları alamadım - Sadece Profilinden bu haberler:
# in rails console
>> p = Profile.joins(:user).limit(1)
>> [#<Profile ...>]
>> p.first_name
>> NoMethodError: undefined method `first_name' for #<ActiveRecord::Relation:0x102b521d0> from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.1/lib/active_record/relation.rb:373:in `method_missing' from (irb):8
# I do NOT want to do this (AKA I do NOT want to use "includes")
>> p.user
>> NoMethodError: undefined method `user' for #<ActiveRecord::Relation:0x102b521d0> from /Library/Ruby/Gems/1.8/gems/activerecord-3.0.1/lib/active_record/relation.rb:373:in method_missing' from (irb):9
I (verimli) bütün özelliklere sahip bir nesne dönmek istiyorum Profil ve Kullanıcı birlikte. Ben istemiyorum: Kullanıcı eklemek çünkü mantıklı değil. Kullanıcı her zaman en son profilin bir parçası olmalıdır, onlar Profil modelinde alanlarmış gibi. Bunu nasıl başarabilirim?
Sana Raylar katılmak kullanıcılara ve profilleri yükleyebilir sanmıyorum
Kullanıcı alanlarının neden profil modelinin içinde olmasını istersiniz? Açıkça iki ayrı model, profil ve kullanıcı var. İçeriklerini kullanarak, her iki varlık için de veriyi tek bir sorguda getirebilir ve sonra sadece bir profil yapamazsınız. – aromero
NOT bir sorgu ...: include iki sorgu üretiyor – sethvargo