#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 всегда находится на стороне с внешним ключом.