Нужна помощь в установлении отношений между моделями - PullRequest
0 голосов
/ 23 марта 2012

Рельсы новичка здесь борются с небольшим проектом.Я создаю простой инструмент для кораблестроения для настольной игры, которая мне нравится в качестве упражнения, и я немного растерялся.

Что я хочу сделать?-После создания моей записи модели корабля я хочу создать запись модели черт, которая будет связана с моделью корабля.После обновления записи модели корабля я хочу обновить или создать модель черт, которая будет связана с записью модели корабля.

Что я пробовал?- Добавление признаков к каждой записи модели корабля в качестве переменных столбца.Я не думаю, что это самый эффективный способ хранения признаков для каждой из моих моделей кораблей.У меня настроена модель черт, но я не знаю, как перейти к ней и связать ее с моими моделями кораблей

Что бы я хотел иметь, когда закончил?- Массив, хранящийся в каждой записи модели корабля, в котором будут перечислены атрибуты для каждого корабля с соответствующими значениями:

, т.е. если

trait_list = [trait1 => t1, trait2 => t2, trait3 => t3, trait4 => t4]

ship_traits = [t1, t4].

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

Я потерян накак я должен установить ассоциации между моделями.Любая помощь или добрый совет относительно направлений, которые я должен исследовать, будет тепло приветствоваться.Я заранее прошу прощения за свою неопределенность, снова я полный новичок.

Приветствия, Ник

1 Ответ

1 голос
/ 23 марта 2012

Я не уверен на 100%, что это решит вашу проблему, но вы можете сделать что-то вроде этого:

class Ship < ActiveRecord::Base
  has_many :traits
  accepts_nested_attributes_for :traits
end

class Trait < ActiveRecord::Base
  belongs_to :ship
end


# In your form
- form_for @ship do |f|
  - f.fields_for :traits do |ff|
    = ff.label :trait_name
    = ff.text_field :trait_name

# this will return all the traits for model defined as @ship
@ship.traits 

Я знаю, что это не массив в модели Корабля, но я слышал, что сложно установить столбец в модели как массив. Если вы хотите, чтобы эти черты были уникальными (так как у многих кораблей может быть много черт, и эти черты могут принадлежать множеству разных кораблей), то у вас будет отношение has_many: through. Если это так, дайте мне знать, и я отвечу снова. Или вы можете взглянуть на это: http://guides.rubyonrails.org/association_basics.html

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