как присоединиться к этим таблицам?

#ruby-on-rails #activerecord

#ruby-on-rails #activerecord

Вопрос:

я новичок в rails

ошибка

 Mysql2::Error: Unknown column 'states.ad_id' in 'where clause': SELECT  `states`.* FROM `states` WHERE (`states`.ad_id = 1) LIMIT 1
  

моя модель

ad.rb

 has_one :state
  

state.rb

 belongs_to :ad
  

вот мои таблицы.

таблица объявлений

  ---- ---------------- ------------- ------- ----------- 
| id | title          | description | price | states_id |
 ---- ---------------- ------------- ------- ----------- 
|  1 | ebook          | asdasd      |     1 |         1 |
|  2 | iphone 4 devol | sdfsdf      |     1 |         1 |
|  3 | asd            | asd         |     1 |         2 |
 ---- ---------------- ------------- ------- ----------- 
  

таблица состояний

  ---- ---------- 
| id | name     |
 ---- ---------- 
|  1 | Pluto    |
|  2 | Mars     |
 ---- ---------- 
  

Ответ №1:

В вашем сообщении об ошибке говорится, что у вас нет столбца ad_id в таблице состояний. Вы, вероятно, хотели использовать states.id вместо состояний.ad_id

Ответ №2:

посмотрите, это ассоциация belongs_to или has_one? раздел http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

в вашем примере вы, вероятно, хотите

состояние

has_many :ads

объявление

belongs_to :state

поскольку вы указываете отношение «многие к одному» в отличие от отношения «один к одному», поскольку в состоянии может быть много объявлений

Комментарии:

1. ДА. Параметр belongs_to всегда находится на стороне с внешним ключом.