Объединение двух таблиц с использованием Scaffold & Rails (Rails noob) - PullRequest
0 голосов
/ 03 ноября 2011

Я новичок в кодировании (никогда не брал класс CS и имею очень и очень минималистическое понимание архитектуры MVC) и работаю над тестовым проектом, чтобы изучить его :-) Я хочу настроить некоторые таблицы таблиц:

Таблица 1:

Таблица_1 ID |Имя |Атрибут_1 |Атрибут_2 |Атрибут_3 |etc

1      | Blah | attribute 1 | attribute 2 | attribute 3 |

Таблица 2:

Таблица_2 ID |Умение |

 1       | nun_chucks  |
 2       |     bow     |
 3       |     arrow   |

Таблица 3:

Таблица_3 ID |Primary_1 ID |Primary_2 ID |

 1     |     1        |      1       |
 2     |     1        |      2       |
 3     |     1        |      3       |

А затем вы сможете визуализировать данные так, чтобы они выглядели так:


Имя |нунчаки, лук, стрела |атрибут 1 |атрибут 2 |Атрибут 3 |


Я использовал Scaffold для создания MVC для таблиц 1 и 2 и имею #page для каждого соответственно.Я не уверен, как объединить их, чтобы создать таблицу 3, а затем отобразить данные, как я спрашиваю.

Спасибо!

Ответы [ 3 ]

1 голос
/ 03 ноября 2011

Это хороший пример того, что вы делаете: http://guides.rubyonrails.org/association_basics.html

0 голосов
/ 03 ноября 2011

Учитывая ваш пример и следующий контроллер в Rails 3

class SomeController < ActionController
   def show
       @table_1 = Table1.find(params[:id],:include => :table2)
       # Table1 and Table2 are your models
       # where table2 would be your has_many_and_belongs_to_many assoc in Table1
   end
end

, вы можете записать это в show.html.erb как

<%= @table_1.name %>
<%= @table_1.table_2.map(&:skill) %>
<%= @table_1.attribute_1 %>    
<%= @table_1.attribute_2 %>
<%= @table_1.attribute_3 %>
0 голосов
/ 03 ноября 2011

INNER JOIN - это то, что вам нужно, это операция с базой данных.

Посмотрите руководство к своим серверам баз данных и прочтите его.

По сути, он берет две таблицы, объединяет их по заданному столбцу (например, Table_2.ID и Table_3.ID) и выдает сводку по обеим объединенным таблицам, оставляя столбцы, которые не совпадают между таблицами.

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