2015-12-02 52 views
-1

我有兩種模式:用戶和語言模型。一個用戶可以有三種不同的語言。我想向用戶展示一種語言。用戶有3種語言

class User < ActiveRecord::Base 
 
    # Include default devise modules. Others available are: 
 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
 
    devise :database_authenticatable, :registerable, 
 
     :recoverable, :rememberable, :trackable, :validatable, 
 
     :omniauthable, omniauth_providers: [:facebook] 
 
    has_many :messages, dependent: :destroy 
 
    has_many :pictures, dependent: :destroy 
 
    has_many :posts, dependent: :destroy 
 
    has_many :comments, dependent: :destroy 
 
    belongs_to :first_language, class_name: 'Language' 
 
    belongs_to :second_language, class_name: 'Language' 
 
    belongs_to :third_language, class_name: 'Language' 
 
end

class Language < ActiveRecord::Base 
 
    has_many :users, foreign_key: "first_language_id" 
 
    # How to do the same with second and third language ? 
 
end

而且對於語言的控制,我不知道如何找到誰講的用戶(第一,第二或第三語言)語言!

class LanguagesController < ApplicationController 
 
    before_action :authenticate_user! 
 
    before_action :find_language, only: :show 
 

 
    def show 
 
    @users = @language.users 
 
    # How to select the users who speak first, second or third language ? 
 
    end 
 

 
    private 
 
    def find_language 
 
     @language = Language.find(params[:id]) 
 
    end 
 
end

用戶模式:

create_table "users", force: :cascade do |t| 
 
    t.string "email",     default: "", null: false 
 
    t.string "encrypted_password",  default: "", null: false 
 
    t.string "reset_password_token" 
 
    t.datetime "reset_password_sent_at" 
 
    t.datetime "remember_created_at" 
 
    t.integer "sign_in_count",   default: 0, null: false 
 
    t.datetime "current_sign_in_at" 
 
    t.datetime "last_sign_in_at" 
 
    t.inet  "current_sign_in_ip" 
 
    t.inet  "last_sign_in_ip" 
 
    t.datetime "created_at",       null: false 
 
    t.datetime "updated_at",       null: false 
 
    t.string "provider" 
 
    t.string "uid" 
 
    t.string "picture" 
 
    t.string "first_name" 
 
    t.string "last_name" 
 
    t.string "token" 
 
    t.datetime "token_expiry" 
 
    t.integer "first_language_id" 
 
    t.integer "second_language_id" 
 
    t.integer "third_language_id" 
 
    t.string "description" 
 
    end

語言模式:

create_table "languages", force: :cascade do |t| 
 
    t.string "title" 
 
    t.datetime "created_at", null: false 
 
    t.datetime "updated_at", null: false 
 
    end

+0

訪問特定語言的用戶請貼的用戶和語言模型的屬性。 –

+0

我剛纔編輯 – Thib44

回答

0
class User < ActiveRecord::Base 
    belongs_to :first_language, class_name: 'Language' 
    belongs_to :second_language, class_name: 'Language' 
    belongs_to :third_language, class_name: 'Language' 
end 

class Language < ActiveRecord::Base 
    has_many :users 
end 

您可以通過

@language.users 
+0

它不工作......我想我必須使用外鍵: 類語言<的ActiveRecord :: Base的 的has_many:用戶,foreign_key:「first_language_id」 結束 這是工作第一語言,但我想用第二種和第三種語言來做... – Thib44