Это будет довольно быстро и легко для большинства из вас ... У меня есть таблица с именем types
, а другая называется projects
. Проект может иметь только один тип, но тип может иметь много проектов. Например, проект общинного сада и проект детской площадки могут иметь тип «зеленого пространства». Поэтому я создал ассоциацию has_many
. В моей модели типа у меня есть это:Отношения не работают должным образом
has_many :projects
и в моей модели проектов я ничего не имею (я ранее имел has_one
в нем, но при взгляде на документы, казалось неправильным). В представлении # show show я бы хотел, чтобы имя отображаемого типа отображалось. В представлении проекта парка следует сказать «greenspace». но я получаю ошибку
undefined method `type' for #<Project:0x007ffdd14fcde8>
Я пытаюсь получить доступ к этому имени, используя:
<h3>Type: <%= @project.type.project_type %> </h3>
я также пытался:
<h3>Type: <%= @project.type_id.project_type %> </h3>
но конечно type_id
дает ряд, и для номера нет project_type
. project_type
- имя столбца, содержащего строковые данные 'greenspace'. Я обращаюсь к нему неправильно? Или я настроил его неправильно?
Кроме того, в моей схеме, проекты выглядит следующим образом:
create_table "projects", force: :cascade do |t|
t.string "type_id"
t.text "description"
t.integer "money_needed"
t.integer "money_raised"
t.float "interest_offered"
t.datetime "end_date"
t.integer "user_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "name"
t.text "url"
end
Ну, я не опубликовал всю модель проекта. Проект должен принадлежать пользователю и иметь тип. Это что-то меняет? Или он может принадлежать более чем одной таблице, не будучи полиморфной, поскольку в моем понимании полиморфизма проект мог бы принадлежать экземпляру любой таблицы, но не в то же время, что ему нужно было бы – HolyMoly
Я получил себя в довольно клубок с шестью таблицами, которые все должны иметь несколько ассоциаций:/ – HolyMoly
спасибо, это сработало! Я собираюсь сделать еще больше googling сейчас lol :) – HolyMoly