как получить имя категории из таблицы категорий по одному из 2 идентификаторов категории в таблице клиентов - PullRequest
0 голосов
/ 22 сентября 2011

Наличие таблицы клиентов и категорий. В таблице клиентов есть category1_id и category2_id. Если у вас есть @customer, как получить имя категории по заданному @customer и связать category1_id и category2_id с идентификатором в таблице категорий?

схема клиента:

  create_table "customers", :force => true do |t|
    t.string   "name"
    t.string   "short_name"
    t.string   "contact"
    t.string   "address"
    t.string   "country"
    t.string   "phone"
    t.string   "fax"
    t.string   "email"
    t.string   "cell"
    t.integer  "sales_id"
    t.string   "web"
    t.integer  "category1_id"
    t.integer  "category2_id"
    t.boolean  "active",         :default => true
    t.string   "biz_status"
    t.integer  "input_by_id"
    t.string   "quality_system"
    t.string   "employee_num"
    t.string   "revenue"
    t.text     "note"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

схема категории:

  create_table "categories", :force => true do |t|
    t.string   "name"
    t.string   "description"
    t.boolean  "active",      :default => true
    t.datetime "created_at"
    t.datetime "updated_at"
  end

В файле rout.rb

  resources :customers do
    resources :categories
  end

Учитывая @customer, как получить имя категории, например @cusotmer (category1_id) .category.name?

Спасибо.

1 Ответ

1 голос
/ 22 сентября 2011

У вас есть две одиночные belongs_to ассоциации в вашей модели. Как это:

    class Customer < ActiveRecord::Base
      belongs_to :category1, :class_name => "Category", :foreign_key => "category1_id"
      belongs_to :category2, :class_name => "Category", :foreign_key => "category2_id"
    end

    class Category < ActiveRecord::Base
    end

Теперь вы можете использовать @customer.category1.name.

(отредактировано: belongs_to, а не has_one) (отредактировано: добавлено :foreign_key)

Однако я думаю, что вы моделируете отношения «многие ко многим» между клиентами и категориями, верно? У клиентов есть несколько категорий, и категории могут быть назначены нескольким клиентам. Взгляните на has_and_belongs_to_many в ActiveRecord (см. Руководство: http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...